这两天,演示环境的java应用无端端就被停止了。在这里记录一下原因和排查过程:
发现应用挂掉以后,第一时间登陆centos,发现进程没有了。于是重新启动应用。
但是启动不起来,去看业务日志,没有找到任何堆栈信息。
后来,在同事的指导下,找到了jdk的错误日志(如果没有指定,通常生产在应用的bin目录下):hs_err_pid9758.log
Memory: 4k page, physical 16267588k(171288k free), swap 0k(0k free)
vm_info: OpenJDK 64-Bit Server VM (25.171-b10) for linux-amd64 JRE (1.8.0_171-b10), built on May 9 2018 13:15:45 by "mockbuild" with gcc 4.8.5 20150623 (Red Hat 4.8.5-28)
time: Tue Jun 26 08:14:28 2018
elapsed time: 50 seconds (0d 0h 0m 50s)
提示交换区内存不足。
但是通过top查看内存使用情况,还有2个G的内存可用。
通过查看linux的系统日志:/var/log/message发现了问题:
Jun 27 11:25:19 sie2 kernel: [25602] 1003 25602 1337279 292684 724 0 0 java
Jun 27 11:25:19 sie2 kernel: [12954] 994 12954 11852 606 26 0 0 nginx
Jun 27 11:25:19 sie2 kernel: [18231] 0 18231