Linux oom-killer
是一种自我保护机制,当系统分配不出内存时(触发条件)会触发这个机制,由操作系统在己有进程中挑选一个占用内存较多,回收内存收益最大的进程kill掉来释放内存。系统为每个进程做评估(/proc/<pid>/oom_score中数值最大的进程被kill掉。
当发生oom的时候,可以记录在/var/log/messages
中,如下:
/var/log/messages
错误日志查看系统是否宕机或者重启,寻找关键词kmsg started
,在xshell输入
# cat /var/log/messages
执行结果如下:
显示结果2020-11-13 10:16有输出kmsg started
,即发生过系统重启,这是人为重启,还是操作系统重启呢,我还不能知道。
发现了开头提到的关键词oom killer
,根据之前的知识,说明系统曾经内存不足,linux将一些进程杀死了,这就解释了为什么Java进程会被kill。
回到之前的问题,那么重启是什么导致的呢?
因为是开发机器,使用的人比较多,我猜测是系统内存爆满导致系统不可用,所以有人重启了系统。
还有一种可能,操作系统杀死占内存大的进程后,依然不够申请多余的内存,就会自动重启系统。