2013-04-08 60 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