天天看點

jstack+top 定位占用資源的程序

cpu占用過高引起報警,使用top指令檢視占用系統資源的程序
           

第一步:top,尋找cpu占用率較高的程序

jstack+top 定位占用資源的程式

第二步: top -pid 13213,尋找該程序中各線程的資源占用情況

jstack+top 定位占用資源的程式
jstack+top 定位占用資源的程式

第三步:jstack 13213 > jstack.log,将線程堆棧資訊輸出到指定檔案裡

jstack+top 定位占用資源的程式

對于多線程情況堆棧資訊,可以使用 printf ‘%x\n’ pid 将線程id轉為16進制

jstack+top 定位占用資源的程式

使用  jstack pid | grep -A 20 pid(16進制) 指令将堆棧資訊進行篩選

jstack+top 定位占用資源的程式

第四步:分析堆棧檔案,使用jstack關鍵字查詢heapDemp中目前棧内處于運作時的棧幀,分析最占資源的地方在哪裡

jstack+top 定位占用資源的程式
jstack+top 定位占用資源的程式

第五步:查找定位分析問題,找到處于wait态的線程,看一下在等待擷取什麼資源,結合第四步,綜合分析可以确認卡到哪裡