原文:https://www.cnblogs.com/xrog/p/14200937.html
1.排查問題的思路
1.查看java行程id ps -ef|grep java

2.使用top -Hp 行程id 查看cpu比較高的執行緒

3.執行jstack 行程id > threadStack行程id.log 命令

4.使用printf %x 執行緒的PID 命令,將執行緒的將執行緒的PID轉為十六進制

5.在jstack匯出的檔案中查找第4步得到的十六進制執行緒pid
可以用vim的查找功能/0x1234,或是grep 0x1234 -A 20

根據執行緒堆疊跟蹤代碼,解決問題,
ps: 如果找不到,多執行幾次步驟2、3(因為執行緒是不斷變化的,所以需要手速)
2.如何提升效率
有沒有發現上面的步驟很繁瑣,而且非常考驗個人手速
推薦工具(思路沿用上面的思路 工具化提升生產力)
1.下載&&解壓工具
wget --no-check-certificate https://github.com/oldratlee/useful-scripts/archive/release-2.x.zip unzip release-2.x.zip
cd useful-scripts-release-2.x/

2.執行工具
show-busy-java-threads -p <指定的Java行程Id>

更多姿勢參照:https://github.com/adminkk/useful-scripts/blob/dev-2.x/docs/java.md#-show-busy-java-threads
當然阿里的arthas也有很多姿勢 參照:https://alibaba.github.io/arthas/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241703.html
標籤:Java
下一篇:【對線面試官】 Java 泛型
