精准定位占用大量CPU的故障
- 使用top命令找到占用CPU较高的,并记录下来OID(进程号)
- jps -l
找到事故的原因
- ps -ef |grep java|grep -v grep
找到事故发生的原因:
- 定位到具体的线程或者代码 :ps -mp 进程编号 -o THREAD,tid,time
- 上面的代码回车完了,就能找到占用大量CPU的线程号。
- 将上面拿到的线程ID号转换成16进制,字母小写
- 最后一条命令,精准定位: jstack 进程号 | grep tid -A60
命令解析:tid就是我们上边转换完成的线程号
-A60 是显示前六十行的意思。
结果:
- 最后得出结果:精准到了行号。
- 问题解决。