CPU超高问题排查

前言:这标题和JVM调优一样,是一层窗户纸,不捅破感觉很难的样子,捅破了后,你会发出感叹:就这?

1、怎么发现CPU超高?

这还不简单,看图

 当然,我们也可以登录相关服务器,使用top命令,查看该服务器CPU是否超标

 

 top命令可以看到进程对CPU和MEM(内存)的使用占比

2、根据进程找到具体线程

top -H -p 31373

如果实在想知道-H 和-p 是啥意思,可以使用命令 man top 自行查看

3、转换线程id号为16进制

why?因为打印的日志信息就是按照16进制打的,要筛选这个线程的信息,可不就要转一下嘛

printf "%x\n" 1546

如果觉得有点麻烦,记不住命令,还可以用:当当当,当!

在线进制转换器:https://c.runoob.com/front-end/58/

 

 反正结果都一样,获取到线程id号(例如:21756)的十六进制转换结果:54fc,这不用命令更能凸显程序员的专业嘛(装逼.jpg)

4、jstack查看具体发生问题的代码

jstack 31373 | grep 54fc -A 30

代码格式是:jstack pid | grep tid -A num
tid就是第三步转换的16进制的线程id号
-A num是为了打印关联代码行的后面30行,通常只观察一行代码,难以看出问题,所以一般多看几行

 

 

红色代码块就是我们想看到的结果,具体分析是什么原因导致的CPU超高,就需要打开IDEA去查看相关代码了。

5、通常的排查结果

  • 死循环

 

  • OOM,GC频繁

posted @   陈旭园  阅读(25)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示