2012-05-16 33 views
5

我們有哪些部署到UNIX上運行WebSphere服務器的應用程序,我們正在經歷着兩個問題:是否可以選擇是否生成堆轉儲?

  1. 系統掛起幾分鐘後恢復 - 進行調查,我們將需要線程轉儲( javacore中)。
  2. 系統掛起不能恢復,需要重新啓動WebSphere - 爲了調查,我們需要線程轉儲和堆轉儲。

的問題是:當系統掛起時,我們不知道它是否是問題1或2

理想情況下,我們想先手動生成線程轉儲,並等着看,如果系統恢復。如果沒有,那麼在重新啓動WebSphere之前,我們會生成線程轉儲和堆轉儲。

我知道kill -3(或kill -QUIT)命令。該命令僅生成線程轉儲(如果參數爲IBM_HEAPDUMP=false)或線程轉儲和堆轉儲(如果爲IBM_HEAPDUMP=true)。但是,必須在啓動WebSphere之前設置IBM_HEAPDUMP,並且在WebSphere運行時不能更改。

我的理解是否正確,關於IBM_HEAPDUMP參數和kill -3命令?

另外,是否有可能以我描述的方式獲取日誌? (即生成JVM診斷時,請選擇是否生成堆轉儲)

回答

2

您的理解與我讀過的所有內容一致。

但是,我相信你可以使用wsadmin scripting完成你想要的。 This article describes how to force javacores and heapdumps on a Windows platform其中kill -3不可用,但可以在任何WebSphere系統上運行相同的命令。

從的wsadmin或wsadmin腳本中,執行:

set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]​ 
$AdminControl invoke $jvm generateHeapDump​ 
$AdminControl invoke $jvm dumpThreads​ 
+0

非常感謝你。在閱讀您的回覆後,我還發現了有關從WebSphere生成堆轉儲的鏈接:http://www-01.ibm.com/support/docview.wss?uid=swg21384926。它包含更詳細的解釋。 – Andy