我们的Tomcat服务器意外终止。 (它作为Windows服务运行;系统事件日志显示错误:事件ID 7034)。
我在哪里可以找到JVM崩溃的转储,或者说明Tomcat服务实际停止运行的原因?
我在应用程序日志中看到了许多异常(我们的Web框架,由于NotSerializableException,Wicket无法将我们的某些页面序列化到磁盘)。我猜这些是服务试图关闭的副作用(因为我们的页面中有非可序列化的对象)。我不清楚是什么触发了服务关闭。
我检查过以下地方:
我没有看到任何表明Tomcat正在关闭或发生VM错误的内容。我在Windows应用程序事件中看到了一些与SQL Server相关的网络错误,但这些错误几乎发生在20分钟后。
任何提示?
答案 0 :(得分:0)
我有同样的问题。当进行jni调用(到本机代码)并且在那里遇到错误(例如,非法访问内存或分段错误)时,您将获得hs_err文件。我们没有找到hs_err文件,也没有像在正常情况下那样向stderr显示错误。我们知道Tomcat进程的退出状态是134(x86),我相信这表示中止信号。如果在代码中调用stdlib'abort()'方法,则会发生这种情况。我相信在我们的jni本机代码中,我们称之为'abort()'。不幸的是,似乎找不到好的方法。如果我可以在Tomcat退出时从Tomcat生成核心转储,我就可以继续了。
抛出Java异常不太可能导致Tomcat关闭。你有任何JNI代码吗?你可能正在调用abort()吗?另外,您是否可以在System.exit()的某处进行Java调用?
答案 1 :(得分:0)
确保您的tomcat未在调试模式下运行。 如果是,则必须禁用调试以停止tomcat服务。
你可以在你的tomcat6.conf中看到它。 您必须对与此类似的行进行评论:
#JAVA_OPTS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4142,suspend=n"
你可以stop/restart
你的tomcat。
再见