Tomcat进程突然崩溃了

时间:2013-04-08 08:56:38

标签: java linux jvm tomcat6

尝试在64位Linux计算机上诊断一些奇怪的Tomcat 6和/或JVM错误:

  

操作系统版本:RED HAT ENTERPRISE LINUX服务器版本6.3(SANTIAGO)
  服务器型号:VMWARE VIRTUAL PLATFORM()

我正在虚拟机上运行一些应用程序测试,并面临一个奇怪的问题。 在正好运行2个进程的某些VM上出现问题:Tomcat应用程序服务器进程(java进程)和监视进程,在一个randomal点,在执行一些随机小时之后,可以在catalina.out上找到以下消息(服务器日志) )失败的VM(问题并不总是在同一台机器上发生):

org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-50100
INFO: Stopping service Catalina
org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080

此后,Tomcat进程被关闭,执行失败。 在内存或CPU使用上没有选择。 在/ var / logs下无法看到系统消息。

  1. 在第一阶段,我们怀疑外部信号正在杀死我们的Tomcat进程,我们尝试将-Xrs标志用于进程的JVM参数,但问题仍然存在。

    java标志(-xrs)应该阻止Java运行时环境处理诸如SIGSEGVSIGABRT之类的异常信号

    在添加xrs标记之前,我们看到因结果信号

    而发生的INFO: Pausing Coyote HTTP/1.1 on http-50100错误

    添加`xrs标志后,kettle / tomcat的行为方式相同,并且在日志文件中没有任何错误。

  2. 在相关进程上运行starce命令会给出以下输出:

    附加过程12917 - 中断退出 futex(0x7f6b9e8ab9d0,FUTEX_WAIT,12918,NULLPANIC:附加的pid 12917退出143

    我们无法运行starce -f来包含所有线程,因为它会导致我们的应用程序被卡住。  但是,使用kill命令杀死子进程的行为相似 - 我们看到父JVM  退出错误代码143,我们也看到发送给子进程的信号。

  3. 我们正在运行java -XX:+HeapDumpOnOutOfMemoryError optind,因为内存不足错误而导致jvm崩溃的堆转储,但由于粉碎而没有核心转储或堆转储。

  4. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

是否有可能,在崩溃之前,存在某种内存耗尽,因此可以通过OOM杀死java进程。 另外,我找到了一个描述类似问题的链接http://bugs.centos.org/view.php?id=4059