CPU 100% 問(wèn)題

CPU 100% 問(wèn)題


線(xiàn)上問(wèn)題處理 CPU 100% 2017-05-27

背景

由于之前做了個(gè)單點(diǎn)登錄,導(dǎo)致首次訪(fǎng)問(wèn)子系統(tǒng)都要去驗(yàn)證登錄、獲取權(quán)限,生成seesion,速度慢,用戶(hù)體驗(yàn)差
故做了個(gè)ajax請(qǐng)求,去提前獲取session,當(dāng)時(shí)做完自測(cè)的時(shí)候是有302錯(cuò)誤的,沒(méi)有在意,覺(jué)得并不影響,然后直接上線(xiàn)。
結(jié)果炸了,2天以后cpu 100%, 如下圖, 重啟之后正常, 過(guò)了1天 又100%。

解決過(guò)程

執(zhí)行 top 命令, 結(jié)果如下

CPUList2.png

執(zhí)行 top -H -p25493

CPUList.png

執(zhí)行 jstack 25493 | grep -A 40 63a5 發(fā)現(xiàn)占用cpu的線(xiàn)程是gc, 初步認(rèn)定是堆內(nèi)存爆滿(mǎn)

看了下pinpoint 更加直觀 如下


PinpointError.png

重啟之后 正常


PinpointRestart.png

jmap 保存快照。
VisualVM分析快照 有個(gè)OM 錯(cuò)誤


OutOfMemoryException.png

堆內(nèi)存溢出.png

JProfilter分析快照 session 有300W個(gè) 驚呆了。。。


session.png

故障原因分析

根據(jù)pinpoint,內(nèi)存上升過(guò)程基本在一條直線(xiàn)上,說(shuō)明session在不停的產(chǎn)生
大概是因?yàn)閍jax請(qǐng)求之后在無(wú)限重定向。
由于這個(gè)ajax請(qǐng)求沒(méi)有攜帶session的cookie,所以就不停的產(chǎn)生session了。
但是有點(diǎn)很奇怪,自測(cè)的時(shí)候重定向幾次后就不會(huì)再重定向了
而線(xiàn)上情況看來(lái)是有個(gè)請(qǐng)求一直在重定向,難道重定向次數(shù)還跟跟瀏覽器有關(guān)?

解決方法

代碼回滾

教訓(xùn)

不要忽視小錯(cuò)誤
優(yōu)化什么的,能推就推了,畢竟能力差

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容