分析java程序中cpu佔用太高的線程

服務器接收請求響應特別慢,用top一看,服務端的一個java服務佔用cpu1800%多(24核心)。html

該服務裏面跑了不少線程,因而想找到是誰引發的java

  1. 首先dump出該進程的全部線程及狀態

使用命令 jstack PID 命令打印出CPU佔用太高進程的線程棧.服務器

jstack -l 20228 > xxx.log

將堆棧信息找出來放到日誌信息中多線程

    2.  使用top命令找到耗cpu的線程網站

    使用top -H -p PID 命令查看對應進程是哪一個線程佔用CPU太高.spa

是否是很震撼,基本上全部的cpu都快滿負荷運行了,這些確定不是正常的java進程.net

3.  結合堆棧信息查看線程

進制轉換網站:http://tool.oschina.net/hexconvert/   用來將進程號轉換爲16進制日誌

20230  -->  4f06htm

原來是觸發了GC,因此請求都沒法及時相應了,接下來要作的就是找找是什麼觸發了GC

 

參考:http://www.cnblogs.com/skyaccross/archive/2012/12/22/2829000.html

相關文章
相關標籤/搜索