記一次Java程序莫名其妙消失不見的排查

表現:

       1.前端突然問我,Java服務是不是停了。

       2.第一反應查看java日誌文件,沒有發現服務重啓的日誌,OOM的日誌,異常日誌也沒有信息

       3.根據日誌裏面顯示的pid以及啓動保存的pid,去查看linux進程,發現該進程已經不在

 

分析:

      1.先確認java進程是否停止,指令:lsof -i:8080 或者netstat -utnlp | grep 'java' 查看java進程/端口是否還在,是進程在,但是無法響應還是進程直接被殺,發現進程已經沒了

     2.查看java的日誌文件.tail -f xxx.log,是否有什麼遺言,錯誤日誌,異常日誌,發現沒有

     3.cd /var/log/查看是否有/var/log/hs_err_pid的文件,沒有,排除JVM故障

     4.查看/var/log/message的日誌,直接grep 查找我的pid 的java日誌,發現Out of memory: Kill process.

     5.使用dmesg | grep 'java'也找到了相關日誌。確診是因爲linux機器內存不足導致的問題       

message的日誌如下

dmesg日誌如下:

 

最後,確診了問題,使用free查看內存使用情況,發現着實緊張。再使用pstree -a查看進程樹,嚇了一大跳,這就是一臺毒瘤機。

因此判定這臺機肯定經常發生OOM killer。

使用grep 'Kill process' /var/log/messages | wc -l 查看oom的情況,從此打開了新世界的大門.......

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章