【问题标题】:Tomcat dies suddenly雄猫突然死了
【发布时间】:2012-02-26 07:08:57
【问题描述】:

尝试在 64 位 linux (CentOS) 机器上诊断一些奇怪的 Tomcat (7.0.21) 和/或 JVM 错误。

我正在对我们的服务器应用程序进行负载测试,并尝试使用 100K 消息对其进行处理。启动jvisualvm 并一直关注堆。一切看起来都很棒*(见下文),直到我处理了大约 93K 条消息,然后 Tomcat 就死了。在 Tomcat 的 PID 号上运行 ps 以确认它已死。

直到这次崩溃:

  • 负载测试已经运行了大约 90 分钟;应该很快就完成了,因为我们是 93K/100K)
  • CPU 在 45% 左右保持强劲
  • 已用堆约为 2GB(在 GC 后加上或减去一堆),但堆大小在大约 30 分钟后从 4GB 增长到 MAX_HEAP
  • 类加载/卸载正常循环
  • 线程转储正常

服务器代码中没有任何对 System.exit() 的调用 - 所以我们可以排除这种情况(是的,我已经仔细检查了!!!)。

我不确定这是 Tomcat 崩溃还是 JVM 崩溃(我怎么知道?)。即使我知道,我似乎也找不到任何迹象表明出了什么问题:

  • 所有服务器应用程序的日志都会停止,没有任何错误消息(即使我们已将日志记录普遍设置为 DEBUG 或更高版本)
  • Tomcat 的 catalina.out 和尊重 localhost_access_* 文件在没有任何信息的情况下停止

我听说可以让 Tomcat 记录核心转储,但不知道如何做到这一点,并且在线示例没有多大帮助。

SO 将如何诊断?我应该采取哪些步骤来开始排除所有可能的因素?

提前致谢!

【问题讨论】:

标签: java tomcat crash jvm


【解决方案1】:

如果 JVM 崩溃,你应该有一个 hs_err_pidNNN.log 文件;您无需执行任何操作即可启用此功能。它的位置取决于您的操作系统以及您运行 Tomcat 的方式。在 Windows 上,它们可以显示在您的桌面上,除非您作为服务运行。否则,它们应该在崩溃进程的当前工作目录中。

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

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

我会尝试重现问题,并逐步简化场景以帮助找出原因。

【讨论】:

  • 谢谢 erickson,我在哪里可以找到这个日志文件?我假设在我的 JDK 目录或附近?
  • ahhh nm - 看起来它将是 cwd 或 /tmp
  • 这取决于您的操作系统以及您运行 Tomcat 的方式。在 Windows 上,它们可以显示在您的桌面上,除非您作为服务运行。否则,它们应该在崩溃进程的当前工作目录中。
  • 我遇到了同样的问题。我的 tomcat 在没有日志的情况下崩溃了。我使用的是 CentOs 6.2。我检查了 hs_err_pid,我没有任何日志。在我的日志中也没有发现 JVM 崩溃。我还寻找了 OOM 杀手日志。你能指导我解决这个问题吗?
  • 抱歉投反对票。我按错了:(我回不来了
【解决方案2】:

另一种可能性是操作系统内存不足,OOM Killer 正在杀死您的进程。在这种情况下,JVM 将没有机会编写堆转储或 hs_err_pid 文件。

【讨论】:

    【解决方案3】:

    您可以使用选项 java -XX:+HeapDumpOnOutOfMemoryError 为由于内存不足错误导致的 jvm 崩溃创建堆转储。

    更多细节在这里Using HeapDumpOnOutOfMemoryError parameter for heap dump for JBoss

    【讨论】:

      【解决方案4】:

      抱歉,我不得不删除 @erickson 的绿色复选标记。我终于弄清楚是什么杀死了 Tomcat。

      似乎未使用 VisualVM 正确配置探查器插件,并试图在 Tomcat 进程上运行配置文件将其杀死。

      现在正在调查原因,一旦我知道更多,就会更新这个答案。

      【讨论】:

      • 您的意思是,“jvisualvm 也有可能导致崩溃?” ;)
      • 不应该只有知道了所有细节才接受答案吗?
      猜你喜欢
      • 2017-04-07
      • 2017-02-18
      • 2016-05-19
      • 2017-03-27
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      相关资源
      最近更新 更多