2012-02-03 145 views
15

試圖在64位Linux(CentOS)機器上診斷一些奇怪的Tomcat(7.0.21)和/或JVM錯誤。Tomcat突然死亡

我正在加載測試我們的服務器應用程序,並嘗試用100K消息打它。推出jvisualvm,並一直關注整個堆。一切都看起來很棒*(見下文),直到我得到約93K處理的消息,然後Tomcat剛剛死亡。在Tomcat的PID號碼上運行ps以確認它已經死機。

直到這個崩潰:

  • 負載測試已經運行了約90分鐘;應該已經完成​​了,此後不久,因爲我們在93K/100K)
  • CPU抱着強烈%左右,45
  • 使用的堆約爲2GB(加或減一幫地方選區後),但堆大小從4GB約後成長爲MAX_HEAP 30分鐘
  • 類加載/卸載循環爲正常
  • 線程轉儲在服務器代碼均正常

無處是System.exit()任何電話 - 因此我們可以排除對出(是的,我已經雙-checked !!!)。

我不確定這是Tomcat崩潰還是JVM(我如何知道?)。即使我知道,我似乎無法找到什麼地方出了錯跡象,包括:

  • 所有的服務器應用程序的日誌只是停止沒有任何錯誤消息(儘管我們在登錄普遍設置爲DEBUG和更高)
  • Tomcat的catalina.out和尊重localhost_access_*文件只是停止沒有任何信息

我聽說可能有Tomcat log中一個核心轉儲當它但不知道如何做到這一點,網上的例子不是活得幫助很大。

怎麼去診斷呢?我應該採取哪些步驟來排除所有可能的因素?

在此先感謝!

+13

是薛定諤的tomcat嗎? – erickson 2012-02-03 17:09:44

+0

您是否檢查更多日誌? http://stackoverflow.com/questions/1575730/debugging-tomcat-crash – 2012-02-03 17:12:41

+0

僅供參考在我的經驗,你可以告訴如果tomcat被OOM Killer殺死,因爲'Killed'這個詞將出現在接近catalina.out末尾的地方。 – Tom 2013-09-12 16:34:31

回答

1

對不起,我不得不從@erickson刪除綠色檢查。我終於明白了什麼是殺死雄貓。

它看起來像一個探查器插件沒有正確配置與VisualVM和試圖運行配置文件的Tomcat進程殺死它。

調查爲什麼現在,並會更新這個答案,一旦我知道更多。

+2

你的意思是,「jvisualvm'也可能導致崩潰?」) – erickson 2012-02-08 20:15:32

14

如果JVM崩潰,您應該有一個hs_err_pidNNN.log文件;你不需要做任何事情來實現這一點。它的位置取決於您的操作系統以及您如何運行Tomcat。在Windows上,除非您作爲服務運行,否則它們可以顯示在桌面上。否則,它們應該位於崩潰進程的當前工作目錄中。

您的操作系統可能爲過程監控提供了額外的工具;你可以更多地描述你的環境,或者可以在serverfault.com處詢問。

jvisualvm實際上也可能導致崩潰。

我會試着重現問題,逐步簡化場景以幫助隔離原因。

+1

謝謝埃裏克森,我會在哪裏找到這個日誌文件?我假設在我的JDK目錄或附近? – IAmYourFaja 2012-02-03 17:24:17

+0

ahhh nm - 看起來像是cwd或/ tmp – IAmYourFaja 2012-02-03 17:25:55

+0

它取決於您的操作系統以及您如何運行Tomcat。在Windows上,除非您作爲服務運行,否則它們可以顯示在桌面上。否則,它們應該位於崩潰進程的當前工作目錄中。 – erickson 2012-02-03 17:26:31

6

另一種可能性是操作系統內存不足,OOM Killer正在破壞您的進程。在這種情況下,JVM不會得到寫入堆轉儲或hs_err_pid文件的機會。