如何排查CPU佔用100%
線上後臺報警CPU佔用100%,CPU佔用過高,本文介紹一下如何排查CPU佔用過高原因。
步驟1. top
輸入top命令,找到佔用CPU最高的程序。按Shift P鍵排序:
可以看到CPU佔用最高的pid是92129。
步驟2. top -Hp pid
檢視指定程序內執行緒資訊,其中pid是第一步的pid。
top -Hp 92129
找到佔用最高的執行緒pid為92156,然後轉成十六進位制,使用公式轉換:
printf '%x' 92156
輸出結果是:167fc
步驟3. jstack 命令
使用jstack命令分析程序狀態,為了方便查詢,將分析結果輸入到一個檔案中,jstack pid > x.txt其中pid是步驟1的程序號。
jstack 92129 > x.txt
開啟x.txt檔案,在檔案中查詢步驟2轉換的十六進位制數:
找到非Jdk程式碼,也是自己寫的程式碼,就能找到問題的根源了。
總結
- top 找到程序號
- top -Hp 程序號,找到執行緒號,執行緒轉成十六進位制。
- jstack pid 分析。根據十六進位制查詢,找到問題程式碼位置。