如何抓取Thread Dump(轉儲執行緒堆疊)

tolywang發表於2012-08-08
   
環境:    JDK 1.5/1.6, WebLogic 9.0 or later

當伺服器掛起,崩潰或者效能很差時,可以抓取伺服器的執行緒堆疊(Thread Dump)用於後續的分析.
Thread dump提供了當前活動的執行緒的快照. 它提供了JVM中所有Java執行緒的棧跟蹤資訊,有很多
方式可用於獲取Thread Dump。

作業系統命令獲取ThreadDump:
Windows:
a. 轉向伺服器的標準輸出視窗並按下Control + Break組合鍵, 之後需要將執行緒堆疊複製到檔案中

UNIX/ Linux
首先查詢到伺服器的程式號(process id), 然後獲取堆疊.
a.      ps –ef  | grep java
b.      kill  -3
------------------------------------------- 
JVM 自帶的工具獲取執行緒堆疊:
JDK自帶命令列工具獲取PID並做ThreadDump:
a.   jps
b.   jstack   
使用JVisualVM:
Threads 標籤頁ThreadDump按鈕.
------------------------------------------- 
WebLogic 自帶的獲取 thread dump的工具:
1. 使用 Admin Console
a. 登入 Admin Console , 點選對應的伺服器
b. 點選Server Monitoring Threads
c. 點選: Dump Thread Stack 按鈕

2. 使用WLST (WebLogic Scripting Tool)
java  weblogic.WLST
connect('weblogic','weblogic123','t3://dggtsebs01-vlx:7010')
cd('Servers')
cd('soa_server1')
threadDump()
disconnect()
exit()
注意: 執行緒堆疊將會儲存在執行wlst的當前目錄下.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-746641/,如需轉載,請註明出處,否則將追究法律責任。

相關文章