雄猫突然死了

Posted

技术标签:

【中文标题】雄猫突然死了【英文标题】: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 将如何诊断?我应该采取哪些步骤来开始排除所有可能的因素?

提前致谢!

【问题讨论】:

是薛定谔的tomcat吗? 您检查了更多日志吗? ***.com/questions/1575730/debugging-tomcat-crash 仅供参考,根据我的经验,您可以判断 tomcat 是否被 OOM Killer 杀死,因为“Killed”这个词会出现在接近 catalina.out 末尾的某个地方。 尝试将交换文件添加到您的系统。它不必很大。 superuser.com/questions/1445510/… 【参考方案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 也有可能导致崩溃?” ;) 不应该只有知道了所有细节才接受答案吗?

以上是关于雄猫突然死了的主要内容,如果未能解决你的问题,请参考以下文章

为啥 POST 不支持字符集,但 AJAX 请求可以?雄猫 6

试图在线查看已部署的 JSP 页面。 XAMP / 雄猫

模拟飞行 DCS F-14B Tomcat雄猫战斗机 中文指南 3.9斗杆

模拟飞行 F-14B Tomcat雄猫战斗机 中文指南 3.5领航员右前面板

DCS F-14B Tomcat雄猫战斗机 中文指南 12.2战斗机对战斗机联络

数据库被标记(可疑),吓死了