查看日志发现进程被killer了,history未发现kill记录,说明不是人工杀死。查看机器内存使用监控发现当时机器内存使用100%。怀疑是被系统杀死了,linux可以设置内存用尽时根据得分杀死一些进程的OOM killer特性(损失最少的工作,释放最大的内存同时不伤及无辜的用了很大内存的进程,并且杀掉的进程数尽量少)。
查看/var/log/messages发现的确是被系统杀死了。
我们这个java设置了很大的堆,但是实际使用的很少,而且因为启动了很多的线程,占用虚拟内存也比较高,得分比较高,从而在系统内存不足的情况下被优先杀掉了。
用户可以对得分进行调整,因为这个机器基本上只有我们的程序在用所以不能这么干,只好错开程序运行时间避免峰值。