2015-09-03 59 views
1

我有一個從Ubuntu 14.04上的shell腳本運行的Java進程,該進程在沒有任何可見的原因和沒有日誌的情況下崩潰。 Java程序使用Twitter的Userstream API。我一直在尋找/ var/log中的痕跡,但沒有發現任何可以明確指出問題的東西。請告知如何處理這個問題,並找到任何有用的日誌可能表明問題。 此外,這是我的Java版本:Linux上的Java進程崩潰(ubuntu 14.04)

Java version "1.8.0_60" 
Java(TM) SE Runtime Environment (build 1.8.0_60-b27) 
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 
+0

歡迎來到StackOverflow。請編輯您的問題並添加'java -version'的輸出。此外,有關Java程序的信息可能會有所幫助。 – hiergiltdiestfu

+0

我編輯了這個問題。謝謝。 –

+0

我還發送*另一個*編輯來修復降價 –

回答

0

故障排除熱點崩潰的第一步是要找到一個崩潰日誌,或者叫致命錯誤日誌。默認情況下,它們被命名爲hs_err_pid%pid.log,其中%pid是崩潰虛擬機的進程ID,通常可以在進程啓動的cwd中找到。所述日誌的名稱和位置也可以通過-XX:ErrorFile -VM參數來影響。例如:

-XX:ErrorFile=/var/log/java/java_error%pid.log

你可以找到更多關於崩潰日誌本身的信息here

該日誌的內容可以指示發生了什麼,以及在哪裏。做好準備,出現HotSpot崩潰的情況通常是而非由託管Java程序中的錯誤引起的。解釋這些崩潰日誌的詳盡指南可以在這裏找到here

如果在崩潰後沒有找到這樣的日誌,那麼虛擬機不會崩潰,而是正常終止。在這種情況下,遠程調試會話可能是按順序的。遠程調試詳述如下here,並且在SO上也有一些主題。

(還有非常遙遠的機會,情況不允許日誌寫入,即在碰撞過程中沒有可用的文件句柄。)

+0

hs_err_pid%pid.log文件不存在,但由於應用程序日誌在中間停止,所以VM沒有正常終止。操作系統是否可以由於某種原因而停止該過程,並且如何檢查這是否真的發生了? –

+0

我看到你找到原因,恭喜!本來是一個重要的信息,當你註銷時它總是崩潰;) – hiergiltdiestfu

+0

當然,如果我知道的話。我寫了一個問題「......沒有任何明顯的原因崩潰......」。我後來發現了事故原因。感謝您的幫助:) –

0

的問題是,當我從服務器斷開連接SSH我的進程終止。爲了在後臺運行的進程,防止進程終止時斷開連接使用 'nohup的':

〜$ nohup的PROCESS_NAME &

我發現這個thread答案。