Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除了OOM,还有什么可以杀死Linux上的Java进程?_Java_Linux_Jvm_Out Of Memory - Fatal编程技术网

除了OOM,还有什么可以杀死Linux上的Java进程?

除了OOM,还有什么可以杀死Linux上的Java进程?,java,linux,jvm,out-of-memory,Java,Linux,Jvm,Out Of Memory,我有两个虚拟服务器来托管我的web应用程序。它们完全相同,使用1.5GB内存运行Debian 6。我使用新安装的脚本配置OS和Tomcat,因此我知道它们是相同的 我的webapp在Tomcat中运行,我设置了850M堆和100M烫发大小。我的应用程序经常在其中一台服务器上死机。我的第一反应是检查是否有杀人凶手,但日志中没有这方面的证据 问题: OOM杀手是否可以在不留下相应日志消息的情况下杀死应用程序 [编辑]如果没有,并且考虑到我没有任何明显的证据会扼杀流程,我在哪里可以找到诊断问题的证据

我有两个虚拟服务器来托管我的web应用程序。它们完全相同,使用1.5GB内存运行Debian 6。我使用新安装的脚本配置OS和Tomcat,因此我知道它们是相同的

我的webapp在Tomcat中运行,我设置了850M堆和100M烫发大小。我的应用程序经常在其中一台服务器上死机。我的第一反应是检查是否有杀人凶手,但日志中没有这方面的证据

问题:

  • OOM杀手是否可以在不留下相应日志消息的情况下杀死应用程序
  • [编辑]如果没有,并且考虑到我没有任何明显的证据会扼杀流程,我在哪里可以找到诊断问题的证据

谢谢,JVM终止的原因很多。它可以根据所属用户或root发送给它的信号终止,也可以根据信号终止(如您所述)

在一些情况下,我可以将随机崩溃追溯到坏/故障RAM,这会导致JVM内存损坏,最终导致进程以
SIGSEGV
终止。您可以查看是否有
hs\u err\u pidXXXX.log
文件。如果运行进程的用户没有在目标目录中写入的权限,则可能会丢失这些文件。您可以使用
-XX:ErrorFile=/path/to/file指定它们的位置。

根据个人经验,在偶发、无法追查、无法解释的随机崩溃情况下,我通常会做的第一件事是运行
memtest86
几个小时。我倾向于在网络中有一个PXE可引导映像


编辑:鉴于您提到的是由另一家公司运营的虚拟专用服务器,在裸机上运行memtest86对您来说是不可能的,但也有一个用户空间版本值得尝试。

如果您希望在OOM上杀死JVM(有时这是一个有效的用例),您可以使用以下选项启动JVM:
-XX:onAutofmemoryError=kill-9%p

任何运行的东西,只要是拥有该进程的用户或超级用户就可以杀死它。因此,问题不应该是“可以做什么”,而应该是“会做什么?”您确定该进程不会自行消亡/崩溃吗?这两台服务器是否使用相同的虚拟化技术?我记得OpenVZ的旧版本在java应用程序方面存在问题。好吧,即使是webApp中的
System.exit(0)
也可以停止java进程。当然,如果出现问题,您将看到“适当的日志消息”,这也取决于记录器的配置和应用程序的异常处理。@ChrisStratton,Matthias-抱歉,我意识到原则上任何东西都可能扼杀进程。我将重新表述我的问题。。。我看不出有什么明显的杀伤力,它会这么做。我想我的问题应该是——鉴于我不知道为什么我的应用程序在一个vps上消亡,而不是在另一个vps上消亡,我在哪里可以找到杀死它的最好证据?@Nelson——它们都由budgetvm.com托管(尽管在不同的位置),我相信这项技术就是OpenVZ vps。这是对我一般问题的一个很好的回答。在我的具体案例中,我认为问题在于OpenVZ没有给我所需的内存,尽管我从未找到任何日志进行确认。