3

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

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

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

我检查了以下地方:

  • 应用程序日志
  • 访问日志
  • 标准输出日志
  • 标准错误日志
  • Tomcat日志
  • jakarta_service 日志

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

有什么提示吗?

4

2 回答 2

0

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

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

于 2010-04-20T22:41:40.980 回答
0

Ensure your tomcat isn't running in debug mode. If it is, you have to disable debugging to stop your tomcat service.

You can see that in your tomcat6.conf. You have to comment the line similar to this:

#JAVA_OPTS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4142,suspend=n"

The you can stop/restart your tomcat.

Bye

于 2012-03-19T09:31:59.270 回答