[轉]排查執行緒池使用情況,可定時任務統計.列印到指定日誌. 獲取系統擴容,執行緒池改造資訊.
阿新 • • 發佈:2019-02-10
獲取系統擴容,執行緒池改造資訊.
1. 檢視程序id
jpsps -ef | grep java
都可以檢視
2. 檢視程序裡具體哪個執行緒最屌絲
man top -H檢視執行緒, -p 指定程序
top -H -p yourpid例如,檢視如下,那麼13099最屌絲,並轉換為十六進位制(0x332b,注意小寫)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13098 admin 16 0 2543m 1.4g 21m S 0.0 72.8 0:03.35 java
13099 admin 16 0 2543m 1.4g 21m S 0.0 72.8 1:54.93 java
13100 admin 16 0 2543m 1.4g 21m S 0.0 72.8 0:00.06 java
3. stack檢視執行緒狀態
-l long listing. Prints additional information about locks
jstack -l yourpid | lessjstack -l yourpid | grep 0x332b --color=always -A10
其中,各欄位的含義,這裡有比較ok的介紹:http://www.blogjava.net/jzone/articles/303979.html
4. [備註]thread dump裡,有幾個ID比較迷惑人,這裡註解一下:
1) "tid" is the thread ID the thread have in the JVM (could be a memory address)
2) "nid" is the native thread id (in hex). On some Linux systems this ID maps directly to a process ID (number 13883 (in decimal) in your case).
3) 執行緒狀態的後面,有時候也會多跟一個id,那個是"資源"的id號,在等待對它的獲取等。
java 狀態 http://www.uml-diagrams.org/examples/java-6-thread-state-machine-diagram-example.html