http://mnt.conf.blog.163.com/blog/static/115668258201211734032988/
首先利用top命令,按P,以cpu使用率从高至低排序
![linux下查出cpu占用过高线程 - zhm - 张传猛的博客](http://img9.ph.126.net/-EeLV7mnlO7Gq8aCFDlW0g==/6597701985842639099.jpg)
然后利用ps aux | grep PID命令可以判断是tomcat 出了问题
但要定位到具体线程或者代码,还需要下面的操作
首先显示线程列表:
ps -mp pid -o THREAD,tid,time
![linux下查出cpu占用过高线程 - zhm - 张传猛的博客](http://img6.ph.126.net/VrkclEUzYJ5JNY7v0gXzsQ==/6597512869842587436.jpg)
![linux下查出cpu占用过高线程 - zhm - 张传猛的博客](http://img3.ph.126.net/AsxWwNrQy0Urh-CgnwajDg==/6597924087191460523.jpg)
找到了耗时最高的线程32720,占用CPU时间快半个多小时了
然后将需要的线程ID转换为16进制格式:
printf "%x\n" tid
最后打印线程的堆栈信息:
jstack pid |grep tid -A 60