福哥答案2020-12-30:
1.top + H 指令找出占用 CPU 最高的行程的 pid,
2.top -H -p,
在該行程中找到,哪些執行緒占用的 CPU 最高的執行緒,記錄下 tid,
3.jstack -l > threads.txt,匯出行程的執行緒堆疊資訊到文本,匯出出現例外的話,加上 -F 引數,
4.將 tid 轉換為十六進制,在 threads.txt 中搜索,查到對應的執行緒代碼執行堆疊,在代碼中查找占 CPU 比較高的原因,其中 tid 轉十六進制,可以借助 Linux 的 printf “%x” tid 指令,
我用上述方法查到過,jvm 多條執行緒瘋狂 full gc 導致的CPU 100% 的問題和 JDK1.6 HashMap 并發 put 導致執行緒 CPU 100% 的問題,
評論
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243374.html
標籤:其他
上一篇:樂鑫Esp32學習之旅28 安信可 ESP32-Cam 攝像頭開發板二次開發 C SDK編程,實作MQTT遠程拍照傳輸到私有服務器。(附帶原始碼)
