Arthas 排查
怕麻烦的话,直接使用Arthas
排查,具体的线程排查命令可以使用:thread -n 3
,表示当前最忙的前N个线程并打印堆栈(详细命令)。
1 | wget https://alibaba.github.io/arthas/arthas-boot.jar |
jstack 排查
使用
top
将系统资源实时显示,输入大写P
对CPU消耗进行排序,第一个就是CPU消耗最高的程序,获取 pid (或者也可以使用jps
找到特定程序 pid)。利用
top -Hp pid
(-H
表示开启线程查看),之后输入大写P
,按照CPU使用率对线程排序。找出线程ID后转为16进制:
printf "%x\n" tid
。通过
jstack pid > jstack.log
生成进程日志文件,在文件中搜索16进制的线程ID,就可以看到这个线程在干啥了。