cpu飙高肯定是有一个进程中的某一个线程在疯狂占用cpu资源,所以线上排查一般是步骤如下:
- top 找出cpu高的java进程号xxx
- top -H -p xxx 可以显示该进程的所有线程的资源消耗情况,找出cpu消耗时间消耗最多的java线程id,假如为yyy,这里yyy是用十进制表示的,需要转换为十六进制,可以使用计算器或者printf "%x\n" yyy命令,假如转换后线程id为zzz
- jstack yyy >> aaaa.txt,将该线程堆栈信息导入这个文件,然后文件中查询相应的线程id,文件中的线程id是十六进制的,需要用转化好的去查询。然后尝试定位出现问题的代码。
网友评论