线上CPU飙高诊断定位

1. 先准备一段java程序,后台运行

在这里插入图片描述
2. 使用 top命令查看cpu的进程使用情况

在这里插入图片描述
在这里看到了一个进程占据了99.3%的cpu利用率,这显然是出现了cpu飙升的情况,这会到期系统其他进程得不到cpu的使用权,从而出现卡顿,因此需要进行排查导致cpu飙升的进程哪里出现了问题

3.使用 命令查看进程和进程下线程的cpu使用率

ps H -eo pid,tid,%cpu grep 32655

 -ps  查看进程对cpu的占用情况
 - H  显示这台机器的所有进程
 -  eo  输出感兴趣的内容
 -  pid  进程id
 -  tid 线程id
 - %cpu cpu的百分占用率
 -  grep 过滤出自己感兴趣的进程号
 -  32655 进程号

此时看到了进程和其对应下的线程的cpu使用百分比
在这里插入图片描述

可以看到,进程号为32655,该进程下对应的线程号为32665的线程出现了cpu占用率飙高的情况

4.使用jstack 进程id 查看该进程下所有运行的线程运行形况

将上一步查出来的线程id转换成十六进制的数,然后与jstack命令输出的线程信息做对比,找到对应的进程

32665 转换为十六进制是:7f99,根据这个数找到对应线程

在这里插入图片描述
通过线程输出的日志信息找到对应占据cpu飙升的部分代码,进行优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值