1. top -d 1
指令解釋:程序界面每1s重新整理一次
2.top -H -p pid或者 ps -mp pid -o THREAD,tid,time | sort -rn
指令解釋:檢視指定程序中各線程的狀态,選出最繁忙的線程tid
3.printf "%x\n" tid
指令解釋:将線程ID轉換為十六進制
4. jstack pid | grep tid -A30
指令解釋:檢視線程的堆棧資訊
接下來就是排查代碼了。
CPU負載過高有幾方面原因:
- 程式計算密集
- 程式死循環
- 多線程阻塞
- IO讀寫頻繁
每一步腳印都要紮得深一點!