2012-02-03 108 views
15

试图在64位Linux(CentOS)机器上诊断一些奇怪的Tomcat(7.0.21)和/或JVM错误。Tomcat突然死亡

我正在加载测试我们的服务器应用程序,并尝试用100K消息打它。推出jvisualvm,并一直关注整个堆。一切都看起来很棒*(见下文),直到我得到约93K处理的消息,然后Tomcat刚刚死亡。在Tomcat的PID号码上运行ps以确认它已经死机。

直到这个崩溃:

  • 负载测试已经运行了约90分钟;应该已经完成​​了,此后不久,因为我们在93K/100K)
  • CPU抱着强烈%左右,45
  • 使用的堆约为2GB(加或减一帮地方选区后),但堆大小从4GB约后成长为MAX_HEAP 30分钟
  • 类加载/卸载循环为正常
  • 线程转储在服务器代码均正常

无处是System.exit()任何电话 - 因此我们可以排除对出(是的,我已经双-checked !!!)。

我不确定这是Tomcat崩溃还是JVM(我如何知道?)。即使我知道,我似乎无法找到什么地方出了错迹象,包括:

  • 所有的服务器应用程序的日志只是停止没有任何错误消息(尽管我们在登录普遍设置为DEBUG和更高)
  • Tomcat的catalina.out和尊重localhost_access_*文件只是停止没有任何信息

我听说可能有Tomcat log中一个核心转储当它但不知道如何做到这一点,网上的例子不是活得帮助很大。

怎么去诊断呢?我应该采取哪些步骤来排除所有可能的因素?

在此先感谢!

+13

是薛定谔的tomcat吗? – erickson 2012-02-03 17:09:44

+0

您是否检查更多日志? http://stackoverflow.com/questions/1575730/debugging-tomcat-crash – 2012-02-03 17:12:41

+0

仅供参考在我的经验,你可以告诉如果tomcat被OOM Killer杀死,因为'Killed'这个词将出现在接近catalina.out末尾的地方。 – Tom 2013-09-12 16:34:31

回答

1

对不起,我不得不从@erickson删除绿色检查。我终于明白了什么是杀死雄猫。

它看起来像一个探查器插件没有正确配置与VisualVM和试图运行配置文件的Tomcat进程杀死它。

调查为什么现在,并会更新这个答案,一旦我知道更多。

+2

你的意思是,“jvisualvm'也可能导致崩溃?”) – erickson 2012-02-08 20:15:32

14

如果JVM崩溃,您应该有一个hs_err_pidNNN.log文件;你不需要做任何事情来实现这一点。它的位置取决于您的操作系统以及您如何运行Tomcat。在Windows上,除非您作为服务运行,否则它们可以显示在桌面上。否则,它们应该位于崩溃进程的当前工作目录中。

您的操作系统可能为过程监控提供了额外的工具;你可以更多地描述你的环境,或者可以在serverfault.com处询问。

jvisualvm实际上也可能导致崩溃。

我会试着重现问题,逐步简化场景以帮助隔离原因。

+1

谢谢埃里克森,我会在哪里找到这个日志文件?我假设在我的JDK目录或附近? – IAmYourFaja 2012-02-03 17:24:17

+0

ahhh nm - 看起来像是cwd或/ tmp – IAmYourFaja 2012-02-03 17:25:55

+0

它取决于您的操作系统以及您如何运行Tomcat。在Windows上,除非您作为服务运行,否则它们可以显示在桌面上。否则,它们应该位于崩溃进程的当前工作目录中。 – erickson 2012-02-03 17:26:31

6

另一种可能性是操作系统内存不足,OOM Killer正在破坏您的进程。在这种情况下,JVM不会得到写入堆转储或hs_err_pid文件的机会。