服务器CPU过高,排查方法

top                                                #定位异常的进程
top -H -p pid                                      #查看异常的线程
strace -T -r -c -p pid                             #查看系统调用和花费的时间
printf "%x/n"线程号                                 #将异常线程转化为16进制
jstack 进程号|grep 线程号(16进制异常线程号)-A90     #定位异常的代码
  1. 使用【top】命令定位异常进程,可发现12836的CPU和内存占用率都非常高;

top 命令默认情况下,是每 3 秒刷新一次。也可以通过 top -d <刷新时间间隔> 来指定刷新频率,如top -d 0.1 或top -d 0.01 等。top 执行时,也可以按“s ”键,修改时间间隔。

  1. 使用【top -H -p 进程号】查看异常线程
  2. 使用【printf "%x\n" 线程号】将异常线程号转化为16进制
  3. 使用【jstack 进程号|grep 16进制异常线程号 -A90】来定位异常代码的位置(最后的-A90是日志行数,也可以输出为文本文件或使用其他数字)。可以看到异常代码的位置

可以参考:https://blog.csdn.net/MachaelYong/article/details/78950059

                  https://www.cnblogs.com/jing1617/p/7429053.html

你可能感兴趣的:(Linux)