CPU飙高问题排查

文章目录

1、查询哪个进程占用CPU

2、进程哪个线程占用CPU

3、查询线程的堆栈信息

 

前言

CPU飙高时,基本就是三板斧就可以找到具体占用CPU的线程信息,这样,你就看到CPU这么高,是什么线程在捣乱了!

 

1、查询哪个进程占用CPU

可以使用Top 或者top | grep 用户名

比如这里我们可以使用 top | grep deploy 查询当前用户deploy下面有哪些进程比较占用CPU,如下图,可以发现进程28284比较占用CPU

2、进程哪个线程占用CPU

接着我们查看上述进程内是哪些线程在捣乱,使用命令top -H -p  PID

在这里我们使用top -H -p  28284,结果如下图,我们发现是有几个线程相对占用比较高,比如28389、28390等(这里我们只是展示效果,不要在乎是否真的占用比较大)

3、查询线程的堆栈信息

在这里我们要分两步

1、将tid转换为16进制的数字:printf “%x\n” tid

2、 查询线程信息:jstack 28284 | grep 6ee5 -A 10

执行结果如下图,我们可以看到具体是我们的应用里的哪个线程占用CPU较高,比如这里就是一个叫SimplePauseDetectorThread_1的线程,下面就是根据具体线程业务分析了

posted @ 2020-11-30 23:40  程序猿玄微子  阅读(118)  评论(0编辑  收藏  举报