写点什么

CPU 飙高问题排查

发布于: 2020 年 11 月 30 日

文章目录


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



用户头像

不要和我比懒,我懒得和你比!!! 2013.10.11 加入

还未添加个人简介

评论

发布
暂无评论
CPU飙高问题排查