收到报警邮件,提示 tn_25 上的服务不可用了。登录到 tn_25 服务器,发现 Java 进程已经不在了。
在 /var/log/messages
文件中找到了以下信息:
Sep 28 14:09:38 localhost kernel: Out of memory: Kill process 133003 (java) score 232 or sacrifice child Sep 28 14:09:38 localhost kernel: Killed process 133003 (java) total-vm:37324000kB, anon-rss:22862892kB, file-rss:0kB, shmem-rss:0kB Sep 28 14:09:40 localhost systemd: tomcat@procurement.service: main process exited, code=killed, status=9/KILL
procurement 正是我们的服务。以上信息说明,我们的 Java 服务由于内存不足,被 linux 系统给 kill 掉了。
服务启动前内存占用情况:
[root@tn_25 ~]# free -g total used free shared buff/cache available Mem: 62 39 19 2 3 19 Swap: 31 31 0
服务启动后的内存占用情况:
free -g total used free shared buff/cache available Mem: 62 52 6 2 3 6 Swap: 31 31 0
swap 已经被用完,说明本机的内存严重不足。需要查看本机都有哪些服务占用内存,进行规划。
原文链接: Java 进程异常退出问题排查 ,转载请注明来源!