内存排查问题复盘

问题现象:

测试人员反馈预发布环境接口请求报502网关错误,检查后发现java程序挂掉了,重启后恢复正常,但过了不久发现java程序又自动停掉了,没有任何人为操作,不知道程序为何会自己停掉

排查步骤:

1.查看内存使用情况:free -m,htop

   发现剩余内存不多了,而且该进程占用虚拟内存较大

   

   推测是机器内存不够被linux内核OOM killer机制给杀掉了,进一步去证实推测

2.查看系统日志: egrep -i -r 'killed process' /var/log,grep "Out of memory" /var/log/messages或者dmesg命令

   由于程序记录了进程ID为3777,所以可以直接根据进程号从/var/log/messages中找出结果来:

   May 17 15:11:55 staging-java kernel: [ 3777]  1002  3777  3609618   228573     691        0             0 java

   May 17 15:11:55 staging-java kernel: Out of memory: Kill process 3777 (java) score 27 or sacrifice child

3.至此问题确定:OOM

解决方案:

1.合理设置jvm参数

2.排查代码是否存在内存泄露

猜你喜欢

转载自www.cnblogs.com/shuo1208/p/10883063.html