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的线程,下面就是根据具体线程业务分析了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容