show-busy-java-threads查找CPU占用高
生活随笔
收集整理的這篇文章主要介紹了
show-busy-java-threads查找CPU占用高
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景:需要查找線上CPU占用過高的Java線程在做什么。
可以使用top命令找出占CPU高的進程
#top 然后按shift+C 按CPU占比排序
然后把進程中占比高的線程id找出來,這個是常見的套路,但是這樣做比較繁瑣。
可以使用show-busy-java-threads工具包快速定位,確實好用。
1.下載安裝
下載
#wget?https://github.com/oldratlee/useful-scripts/archive/release.zip
解壓
#unzip useful-scripts-release.zip
這是介紹:useful-scripts/java.md at master · oldratlee/useful-scripts · GitHub?
show-busy-java-threads
# 從所有運行的Java進程中找出最消耗CPU的線程(缺省5個),打印出其線程棧# 缺省會自動從所有的Java進程中找出最消耗CPU的線程,這樣用更方便
# 當然你可以手動指定要分析的Java進程Id,以保證只會顯示你關心的那個Java進程的信息
show-busy-java-threads -p <指定的Java進程Id>show-busy-java-threads -c <要顯示的線程棧數>show-busy-java-threads <重復執行的間隔秒數> [<重復執行的次數>]
# 多次執行;這2個參數的使用方式類似vmstat命令show-busy-java-threads -a <運行輸出的記錄到的文件>
# 記錄到文件以方便回溯查看show-busy-java-threads -S <存儲jstack輸出文件的目錄>
# 指定jstack輸出文件的存儲目錄,方便記錄以后續分析##############################
# 注意:
##############################
# 如果Java進程的用戶 與 執行腳本的當前用戶 不同,則jstack不了這個Java進程
# 為了能切換到Java進程的用戶,需要加sudo來執行,即可以解決:
sudo show-busy-java-threadsshow-busy-java-threads -s <指定jstack命令的全路徑>
# 對于sudo方式的運行,JAVA_HOME環境變量不能傳遞給root,
# 而root用戶往往沒有配置JAVA_HOME且不方便配置,
# 顯式指定jstack命令的路徑就反而顯得更方便了# -m選項:執行jstack命令時加上-m選項,顯示上Native的棧幀,一般應用排查不需要使用
show-busy-java-threads -m
# -F選項:執行jstack命令時加上 -F 選項(如果直接jstack無響應時,用于強制jstack),一般情況不需要使用
show-busy-java-threads -F
# -l選項:執行jstack命令時加上 -l 選項,顯示上更多相關鎖的信息,一般情況不需要使用
# 注意:和 -m -F 選項一起使用時,可能會大大增加jstack操作的耗時
show-busy-java-threads -l# 幫助信息
$ show-busy-java-threads -h
2.使用
#./show-busy-java-threads
?
參考:JVM那點事—show-busy-java-threads排查CPU性能問題 - 簡書
總結
以上是生活随笔為你收集整理的show-busy-java-threads查找CPU占用高的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个相关李宏毅的QQ网名!
- 下一篇: 有关奥斯曼土耳其灭拜占庭帝国的电影