Linux 下定位java應用 cpu高的原因(轉)


使用場景:

遇到Linux下java應用cpu占用很高的時候,我們很想知道此時的應用到底在做什么導致資源的消耗。

方便我們進一步定位和優化~

 

1、查詢cpu耗用top5的進程(你也可以top10)

[root@FATD00013672 ~]# ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=-%cpu | head -5

可以看到上面TID為322的cpu占用是第一的。

 

2、將線程ID轉換為16進制格式

[root@FATD00013672 ~]# printf "%x\n" 322

printf "%x\n" tid

 

3、打印線程ID堆棧信息

[root@FATD00013672 ~]# jstack 43 |grep 0x142 -A 30

jstack pid |grep 0xtid -A 30

有堆棧信息后,就可以明確的知道,此時此刻就是這個東東在消耗cpu資源

**********************************

BTW:此方法驗證和使用JMX監控方法的結果一致

(說明:示例服務本身沒什么問題)

 

原文鏈接地址:https://zhuanlan.zhihu.com/p/28174686

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM