运维开发网

CPU飙高问题排查

运维开发网 https://www.qedev.com 2020-12-08 13:29 出处:51CTO 作者:youngzil
文章目录1、查询哪个进程占用CPU2、进程哪个线程占用CPU3、查询线程的堆栈信息 前言CPU飙高时,基本就是三板斧就可以找到具体占用CPU的线程信息,这样,你就看到CPU这么高,是什么线程在捣乱了! 1、查询哪个进程占用CPU可以使用Top 或者top | grep 用户名比如这里我们可以使用 top | grep deploy 查询当前用户deploy下面有哪些进程比较占用CPU,如下图,可以

文章目录

1、查询哪个进程占用CPU

2、进程哪个线程占用CPU

3、查询线程的堆栈信息

 

前言

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

 

1、查询哪个进程占用CPU

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

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

CPU飙高问题排查

2、进程哪个线程占用CPU

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

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

CPU飙高问题排查

3、查询线程的堆栈信息

在这里我们要分两步

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

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

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

CPU飙高问题排查

0

精彩评论

暂无评论...
验证码 换一张
取 消