Linux 系统内存不足导致 Java 进程被杀掉

问题描述

测试环境 Tomcat + Java 部署的应用,应用进程总是莫名其妙的消失。

正确的问题排查

查看 /var/log/message 出现如下日志,标明,Linux 系统自身把 Java 进程杀掉了

Jun 28 02:58:27 hilife-dev001 kernel: Out of memory: Kill process 14561 (java) score 52 or sacrifice child

当 Linux 系统内存不足时,系统会把当前系统占用系统内存过高的进程当做流氓进程,然后系统发出信号将这个流氓进程杀掉,最后导致 Java 应用服务不能使用

解决方法

方法1:通过调整 JVM 参数限制最大可使用内存

-Xmx2g

方法2:启用 swap 分区
参考:https://help.aliyun.com/knowledge_detail/42534.html
方法3:增加物理内存或增加机器
方法4:将应用分配到压力较小的服务器上

猜你喜欢

转载自blog.csdn.net/dejunyang/article/details/94016339