场景:压测JAVA项目时,JAVA进程CPU使用率过高,可通过以下方法排查异常线程
第一种方法:
top #定位异常的进程
top -H -p pid #查看异常的线程
strace -T -r -c -p pid #查看系统调用和花费的时间
printf %x 线程号 #将异常线程号转化为16进制
jstack 进程号|grep 线程号(16进制异常线程号)-A90 #定位异常的代码 (最后的-A90是日志行数,也可以输出为文本文件或使用其他数字)
第二种方法:
top #定位异常的JAVA进程PID
jstack -l pid >/root/test.log #将该进程的日志信息写入root目录的test.log文件里
然后在test.log里搜索是否含有"deadlock"(死锁)