我使用jstack獲得具有最高cpu利用率的PID線程轉儲。它指向帶有0x4974的線程。100%cpu利用率需要幫助分析線程轉儲
「VM線程」 PRIO = 10 TID = 0x00007ffc60068800 NID = 0x4974可運行 「VM 週期性任務線程」 PRIO = 10 TID = 0x00007ffc60098000 NID = 0x497b 條件JNI等待全局引用:1182
由於它沒有線程的狀態和正在執行的代碼,與我在網絡上看到的示例線程轉儲不同,所以我在分析過程中遇到了問題。是否有任何免費軟件,最好在線,可以分析.txt
線程轉儲文件?
感謝那些回覆。好的,我可以學習如何使用武士,tda和ibm線程轉儲工具。看來問題在於正在創建的線程數量,等待監視的線程,鎖定和阻塞。但我想知道你們是否有額外的投入。這是我從TDA有:
當它以100%的CPU利用率
Overall Thread Count 1001
Overall Monitor Count 644
Number of threads waiting for a monitor 50
Number of threads locking a monitor 636
Number of threads sleeping on a monitor 0
Number of deadlocks 0
Number of Monitors without locking threads 0
後,我重新
所有線程的Overall Thread Count 32
Overall Monitor Count 13
Number of threads waiting for a monitor 0
Number of threads locking a monitor 13
Number of threads sleeping on a monitor 13
Number of deadlocks 0
Number of Monitors without locking threads 0
40%是在監視器上睡覺。
這可能表示他們正在等待一些超載或不可用的外部資源(例如數據庫)或者正在等待執行某些操作(空閒線程)。您應該使用不包含所有空閒線程的篩選器檢查睡眠線程。
我們只有約60個客戶。
我在cpu利用率爲100%並重置後上傳了線程轉儲。我還包括我使用的工具(武士,tda和ibm線程和顯示器轉儲分析器) http://www.mediafire.com/?901mduvodm97d8v,x72cdixp8fltabu,fhfw4e50c7fzu4t,1oq2npaxmtxz0dq,i0u997fhvxfagd3,cdewe4de6x3rhe4,w2ndwqw2ekwixkd,qsbst5ow6f59p75,9fx8w8qpfdhjmyx,levpqppb3ouh71q
我會使用visualvm加載線程轉儲並分析它。 –
您可以發佈整個線程轉儲嗎?這將提供更多的線索,因爲造成真正問題的原因。 – CuriousMind
如果我發佈整個線程轉儲,它真的會好嗎?它相當長。 – user2939830