幻影进程杀戮

我有一个在CentOS 5.4服务器上运行的Java应用程序。

随机地,似乎没有理由,这些进程将会死亡,而不是通过应用程序退出,或者由于我的杀死,但由于似乎杀了一些东西而不留下痕迹。

我logging应用程序的所有输出,并将stderr和stdout发送到日志文件,这些输出日志都不包含任何可以指示这些进程已经死亡的原因。

我的第一个直觉是内核级别的OOM杀手,但是系统的内存永远不会太低,在任何时候通常都有1GB到3GB的内存空间。

我的问题是:有没有人知道是什么原因造成的,还是有人有任何想法,我可以开始寻找?

谢谢。

开始我的Java应用程序

strace -tt -o strace.out <java command> 

显示它正在发送一个SIGHUP命令,正在杀死它。 事实certificate,尽pipe我将进程设置为在后台运行(通过附加命令),但该命令仍然与创build它的任何线程绑定。

这意味着,对于由apache执行的命令,只要创build它们的辅助线程被回收,它们就会被终止,而对于手动执行的命令,只要我注销,它们就会被终止。

我解决了这个问题,只需要等待命令即可

 nohup java -jar /path/to/my/java.jar arguments & 

进程可能会得到一些信号,导致它们退出,可能是由于硬件错误(例如,坏的内存可能会导致段错误)。 如果没有看到syslog / dmesg,请尝试启用核心转储。 然后你可以运行gdb来了解发生了什么。