JavaShuo
Linux進程佔用cpu100%問題排查
時間 2021-07-12
標籤
問題排查
java
linux
jvm
傳統方式
查看當前佔用CPU較大的進程PID. 命令: top
定位具體業務模塊. 命令: pwdx [PID]
定位具體項目(例如: 多個java進程) 命令: ps aux | grep [PID]
根據第一步獲取到的PID找到對應的項目,查找進程中佔用cpu較多的線程ID. 命令: top -Hp [PID]
將第二部獲取到的線程ID轉化爲16進制. 命令: printf 「0x%x\n」 [線程PID]
通過java的jstack獲取對應線程指定行數的堆棧信息. 命令: jstack [PID] | grep [線程PID] -A 50
使用示例
top
pwdx 101647
ps aux | grep 101647
top -Hp 101647
printf 「0x%x\n」 101647
jstack 101647 | grep 19d45 -A 50
優化方式
利用工具
服務檢測工具
腳本工具(例如: 阿里巴巴的show-busy-java-threads https://github.com/oldratlee/useful-scripts/blob/master/docs/java.md#-show-busy-java-threads)