2013-04-08 84 views
4

尝试诊断64位Linux机器上一些奇怪的Tomcat 6和/或JVM错误:Tomcat进程突然压碎

OS VERSION:RED HAT企业Linux服务器RELEASE 6.3(圣地亚哥)
SERVER MODEL :VMWARE虚拟平台()

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

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进程被shutted下来,执行失败。 在内存或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:使用带有143

    退出PID 12917我们不能运行starce -f来包含所有线程,因为它会导致我们的应用程序被卡住 但是,使用kill命令查杀子进程的行为类似 - 我们看到父进程JVM 以错误代码143退出,我们也看到发送的信号到儿子的过程。

  3. 我们也在使用java -XX:+HeapDumpOnOutOfMemoryError optind为由于内存不足导致的jvm崩溃创建堆转储,但没有核心转储或堆转储由于粉碎而被创建。

任何想法?

+0

我不确定他们是否找到解决方案 - 但此线程有类似的声音问题 - http://comments.gmane.org/gmane.comp。jakarta.tomcat.user/206745 – 2013-04-08 09:01:39

+0

Tomcat是否在崩溃时接收请求?没有部署的应用程序会崩溃吗? – fglez 2013-04-10 15:39:37

+0

我已经用信号strace运行我的过程,并得到以下输出: 1过程24631附加 - 中断退出 2 --- SIGRT_2(实时信号0)@ 0(0)--- 3 rt_sigreturn( 0x7fe4d8b39850)= 202 4 PANIC:连接的pid 24631退出143关于请求我不确定,实际上在服务器日志中,我们可以看到一个请求关机的痛处。 – 2013-04-12 07:22:30

回答

0

是否有可能,在崩溃之前,会有某种内存耗尽,这样Java进程可能会被OOM杀死。 另外,我找到了描述类似问题的链接http://bugs.centos.org/view.php?id=4059

+0

使用-Xdump标志运行进程后,我们得到了转储文件,但似乎没有包含任何有用的信息。 env上的所有监视工具都没有向我们显示有关内存的任何问题。 – 2013-04-12 07:28:33