問題描述
Tomcat下只部署了一個項目,但是CPU持續保持99%,看任務管理器發現Tomcat程序占大部分,mysql占小部分,推測是定時任務頻繁訪問數據庫導致,先從java程序看起。
查看java進程下的線程
使用工具
process explorer:Windows系統和應用程序監視工具。(自行百度下載)
操作步驟
-
雙擊打開監控工具
這里可以看到tomcat的PID為1212 -
雙擊點開Tomcat進程,進入線程頁面
可以看到占用最高的線程ID是:4432 -
使用jstack將tomcat進程中的堆棧信息輸出到文件
使用命令:jstack -l [PID] >> [file]
如:
jstack -l 1212 >> D:/1212.txt
- 1
執行完成后,在指定目錄找到導出的文件
- 查看文件,並找到高占用線程ID的堆棧
如:剛剛顯示占用高的是4432,先轉換成16進制,就是1150,然后在導出的文件中查找1150 - 根據堆棧信息排查代碼中是否有導致cpu占用過高的操作,然后進行優化。