有时候会遇到JAVA程序在服务器上运行一段时间后进程突然没有了,查看JAVA应用的日志并没有任何的异常。
这时候应该优先想到进程是不是被操作系统Kill掉了,查看操作系统日志:
1 2 3 |
cd /var/log/ # 查看 messages 文件 cat messages* | grep java |
如果看到类似如下信息说明由于操作系统内存剩余太低,JAVA进程被操作系统干掉了:
01 02 03 04 05 06 07 08 09 10 |
Apr 15 20:57:50 iZuwucrzorhw2yZ kernel: java invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: java cpuset=/ mems_allowed=0 Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: CPU: 0 PID: 2793 Comm: java Not tainted 3.10.0-693.2.2.el7.x86_64 #1 Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: [ 1356] 0 1356 629574 17847 94 0 0 java Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: [ 3804] 0 3804 886644 19509 113 0 0 java Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: [ 2676] 0 2676 894623 85673 278 0 0 java Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: [ 2754] 0 2754 965673 40515 362 0 0 java Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: [14208] 0 14208 3051253 108737 4500 0 0 java Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: Out of memory: Kill process 14208 (java) score 113 or sacrifice child Apr 15 20:57:51 iZuwucrzorhw2yZ kernel: Killed process 14208 (java) total-vm:12205012kB, anon-rss:434948kB, file-rss:0kB, shmem-rss:0kB |
这种问题通常发生下内存较低的服务器下,操作系统为了保护内存能够支持自己运行,将JAVA进程杀掉。
找到了运营自然好解决,通过分为2种情况:
- JAVA程序有内存泄露问题, 这种情况那就通过