Tomcat 或 JVM 故障转储文件?

标签 tomcat crash crash-dumps tomcat5.5 jvm-crash

我们的 Tomcat 服务器意外终止。 (它作为 Windows 服务运行;系统事件日志显示错误:事件 ID 7034)。

我在哪里可以找到 JVM 崩溃的转储,或者 Tomcat 服务实际上停止运行的原因的一些指示?

我在我们的应用程序日志中看到许多异常(我们的 Web 框架,Wicket 由于 NotSerializableException 而无法将我们的某些页面序列化到磁盘)。我猜测这些是试图关闭服务的副作用(因为我们的页面中有不可序列化的对象)。我不清楚是什么触发了服务关闭。

我检查了以下地方:

  • 申请记录
  • 访问日志
  • 标准输出日志
  • 标准错误日志
  • tomcat.log
  • jakarta_service 日志

我没有看到任何表明 Tomcat 正在关闭或发生 VM 错误的信息。我在 Windows 应用程序事件中看到一些与 SQL Server 相关的网络错误,但这些错误发生在将近 20 分钟后。

有什么提示吗?

最佳答案

我也遇到了同样的问题。当进行 jni 调用(对 native 代码)并且在那里遇到错误(例如,非法访问内存或段错误)时,您将获得一个 hs_err 文件。我们没有找到 hs_err 文件,也没有像通常在那种情况下那样向 stderr 显示错误。我们确实知道 Tomcat 进程的退出状态是 134 (x86),我认为这表示一个中止信号。如果您在代码中调用 stdlib 的“abort()”方法,就会发生这种情况。我相信在我们的 jni native 代码中的某处我们正在调用“abort()”。不幸的是,似乎没有找到位置的好方法。如果我可以在 Tomcat 退出时从它生成一个核心转储,我就会有一些事情要做。

抛出 Java 异常不太可能导致 Tomcat 关闭。您有任何 JNI 代码吗?您是否有可能调用 abort()?另外,您是否有可能在某处调用 System.exit() 的 Java?

关于Tomcat 或 JVM 故障转储文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299690/

相关文章:

debugging - 在故障转储中获取堆栈的时间戳

Spring Boot 卡住约 4 秒

android - 在模拟器上启动时,Eclipse android 应用程序崩溃

vba - 循环崩溃Excel VBA

c++ - windows故障转储文件详细内存使用分析?

windows - 从任务管理器生成时的进程转储类型

mysql - tomcat jdbc 故障转移主机

eclipse - 每次重启时如何阻止 Eclipse 累积 Tomcat 实例?

tomcat - 如何使用插件安装 Solr 1.4(我加载类 'solr.FastLRUCache' 时出错)?

json - ResponseSerialization.swift 崩溃(部分申请专业)