• 使用top命令找到占用CPU较高的,并记录下来OID(进程号)

精准定位占用大量CPU的故障_java

  • jps -l

 找到事故的原因

精准定位占用大量CPU的故障_top命令_02

  • ps  -ef |grep java|grep -v grep

    找到事故发生的原因:

精准定位占用大量CPU的故障_top命令_03

  • 定位到具体的线程或者代码 :ps -mp 进程编号 -o THREAD,tid,time
  • 上面的代码回车完了,就能找到占用大量CPU的线程号。
  • 将上面拿到的线程ID号转换成16进制,字母小写
  • 最后一条命令,精准定位: jstack  进程号 | grep  tid -A60

命令解析:tid就是我们上边转换完成的线程号  

                  -A60 是显示前六十行的意思。

结果:

精准定位占用大量CPU的故障_java_04

  • 最后得出结果:精准到了行号。
  • 问题解决。