记一次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的情况,从此打开了新世界的大门.......

 

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