前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CPU飙高问题排查

CPU飙高问题排查

原创
作者头像
程序猿玄微子
修改2020-12-01 16:43:30
1.5K0
修改2020-12-01 16:43: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的线程,下面就是根据具体线程业务分析了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 1、查询哪个进程占用CPU
  • 2、进程哪个线程占用CPU
  • 3、查询线程的堆栈信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档