表現:
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的情況,從此打開了新世界的大門.......