问题描述
测试环境 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:将应用分配到压力较小的服务器上
本文探讨了在Linux环境下,Tomcat+Java部署的应用进程无故消失的问题。深入分析发现,这是由于系统内存不足,Linux将高内存消耗的Java进程视为异常并自动终止。文章提供了四种解决方案:调整JVM参数限制内存使用、启用swap分区、增加物理内存或机器、将应用迁移至压力较小的服务器。
266

被折叠的 条评论
为什么被折叠?



