線上排除問題流程

 排查CPU佔用高的代碼

 

1. 編寫代碼

public class Demo {
    public static void main(String[] args) {
        System.err.println("測試開始");
        while(true){

        }
    }
}

編寫一個死循環代碼。

執行此代碼

2.找到CPU佔用率高的進程

我們可以觀察到top查看cpu佔用高的進程。

 

找到cpu佔用率爲 100%的線程。

3.導出執行堆棧

 jstack 3417 >> java.txt

3417 爲進程號

 

4.查佔用率高的線程

top -H -p 3417

 

 

 找到線程號 爲3418 

5.轉換16進制

 printf "%x\n" 3418

執行後 爲  d5a

 

6.在之前導出的堆棧文件查找

查找d5a

"main" #1 prio=5 os_prio=0 tid=0x00007f3ef804b000 nid=0xd5a runnable [0x00007f3efef94000]
   java.lang.Thread.State: RUNNABLE
	at Demo.main(Demo.java:4)

發現是我們的Demo第四行出了問題,這樣找回源碼,去掉死循環即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章