服務器接收請求響應特別慢,用top一看,服務端的一個java服務佔用cpu1800%多(24核心)。html
該服務裏面跑了不少線程,因而想找到是誰引發的java
使用命令 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