天天看点

[linux] cpu过高问题排查

前言:

在服务器报cpu过高时,往往我们束手无策,不知道怎么排查问题,今天就来分享一个cpu过高排查问题的方法,此文章为转载文章。

  1. 使用top命令定位异常进程。可以看见12836的CPU和内存占用率都非常高
  2. [linux] cpu过高问题排查
  3. 此时可以再执行ps -ef | grep java,查看所有的java进程,在结果中找到进程号为12836的进程,即可查看是哪个应用占用的该进程。
  4. 使用top -H -p 进程号查看异常线程
  5. [linux] cpu过高问题排查
  6. 使用printf “%x\n” 线程号将异常线程号转化为16进制
  7. [linux] cpu过高问题排查
  8. 使用jstack 进程号|grep 16进制异常线程号 -A90来定位异常代码的位置(最后的-A90是日志行数,也可以输出为文本文件或使用其他数字)。可以看到异常代码的位置。
  9. [linux] cpu过高问题排查
在执行 ./jstack 进程号 | grep 16进制异常线程号 -A90 即可。