通过jstack分析cpu问题
這個命令不是用來分析內存泄漏的,使用來分析線程問題的。
引用下之前寫過的一個東西,可能會有幫助:
工作填坑記,關于cpu100%只能通過jstack txt文件分析原因
背景
工作中客戶嵌入我們的agent,導致cpu飆升到100%,給搞掛了,客戶已經刪了agent相關所有文件,將agent剔除了。
線索:在這之前客戶把平臺關了。
提供了jstack文件
之前學習jvm的時候,了解過一些jstack
基于商業機密,不方便粘貼相關jstack文件。
分析
通過jstack相關操作查看哪個線程導致的,分別需要命令
1 top
2 top -Hp
3 jstack pid | grep pid
可是客戶已經剔除了agent,現在執行top,也無法復現問題
通過dump的jstack文件分析問題
嗯,不解釋了
解決
通過翻看博客https://www.jianshu.com/p/51052aaac3be 對于jstack的相關復習了一遍,收益頗豐,可是只能通過jstask分析,需要對每一個線程的狀態有一定的了解。
如下的博客https://www.cnblogs.com/rainy-shurun/p/5732341.html,末尾部分,有很詳細的分析,感謝!!!(建議自己認真閱讀整篇文章)
其中這里的部分對于分析很有幫助
而我的jstack文件中,就有很多的waiting on condition,通過上面的描述是因為加載第三方資源網絡的問題。
在我的jstack文件中有相關線程的名字,在項目中進行查看到相關的線程,發現是發送數據的問題,而之前說過,把后端服務關了,我們發送數據的線程受到了阻塞。
目前分析是這樣的,可能不準確,等待后期更新。
相關連接
如何玩jstack:jstack 排查現成問題
真正解決本次問題:JVM監控命令詳解(轉),此博客原文:http://www.cnblogs.com/zhengyun_ustc/archive/2013/03/18/tda.html
我特地轉載了一下自己記錄下:https://blog.csdn.net/dataiyangu/article/details/102630271
總結
以上是生活随笔為你收集整理的通过jstack分析cpu问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 菜单背景设置颜色 菜单设置颜色
- 下一篇: Linux不显示IP的问题