CPU 飙高该如何排查

CPU 飙高排查我一般分三步:

第一:确认是用户态还是系统态高,用 top 看 us/sy/wa

第二:定位具体进程,再定位线程

第三:结合线程栈分析是死循环、锁竞争、GC 频繁还是线程过多

1)us 高、sy 低、wa 低

含义:纯用户态计算,无阻塞、无系统调用、无 IO

典型原因

  • 死循环
  • 复杂计算 / 递归
  • JSON / 序列化疯狂
  • 正则回溯爆炸
  • GC 线程疯狂(VM Thread、GC task)

栈特征大量 RUNNABLE,一直占 CPU 不释放

一句话

us 高 sy 低 = 业务代码死循环 / 计算密集 / GC 频繁,直接 jstack 找 RUNNABLE 栈。

2)sy 高、us 低 / 一般

含义:内核态繁忙,系统调用频繁

典型原因

  • 线程频繁切换(thread count 极高)
  • 大量网络 IO:accept/read/write 太多
  • 大量锁竞争(mutex、自旋锁)
  • 大量小 IO、频繁系统调用

栈特征

  • RUNNABLE 但在native 方法
  • epollWaitreadwritelock
  • 大量线程 WAITING / BLOCKED

一句话

sy 高 = 线程太多、切换频繁、锁竞争、网络 IO 密集,看线程数 + 锁。

3)wa 高(iowait 高)、us/sy 都不高

含义:CPU 空闲,但在等磁盘 IO

典型原因

  • 磁盘满、磁盘慢
  • 大量日志打印、文件读写
  • SQL 慢查询(大量物理 IO)
  • 大量阻塞 IO(InputStream、FileWriter)

栈特征

  • 大量 RUNNABLE 但卡在 IO
  • readwriteFileInputStream
  • 数据库驱动 socketRead0

一句话

wa 高 = 不是 CPU 问题,是 IO 瓶颈:磁盘慢 / 日志多 / 慢 SQL。

4)锁竞争严重(sy 略高、us 一般、线程 BLOCKED 多)

特征

  • 锁等待多,CPU 不极端高,但应用极慢
  • BLOCKED 大量出现
  • 大量线程等待同一把锁:waiting to lock <0x...>

典型原因:synchronized 竞争、ReentrantLock 抢锁严重

一句话

大量 BLOCKED = 锁冲突,找占有锁的线程,优化锁粒度或无锁。

5)GC 频繁导致 CPU 飙高

特征

  • us 高,但不是业务线程
  • jstack 看到:VM ThreadGC task thread#0
  • jstat -gc 看到 YGC 每秒多次、FGC 频繁

原因:内存不足、大对象、内存泄漏

一句话

GC 线程占 CPU = 内存问题,不是业务代码死循环。

6)线程数过多导致 CPU 高

特征

  • sy 明显高
  • ps -eLf | grep java | wc -l 几千线程
  • 大量 TIMED_WAITING、WAITING
  • 频繁线程切换消耗内核 CPU

原因:线程池无限制、new Thread 滥用、定时任务太多

一句话

线程数过多 → sy 高、吞吐低,限制线程池核心线程数。

三、终极面试万能口诀(背这个就行)

  • us 高:死循环、计算密、GC 疯
  • sy 高:线程多、切换频、锁竞争
  • wa 高:IO 慢、磁盘忙、慢查询
  • BLOCKED 多:锁冲突
  • GC 线程高:内存炸
  • 线程几千:池无限
全部评论
可以的,写的很好呢
点赞 回复 分享
发布于 昨天 23:30 北京

相关推荐

我是腾讯26年的校招生,从去年8月开始我入职腾讯CDG某部门实习,因为目标就是转正,从进去第一天开始,我就是按全职的标准在干活的,一个人负责一个独立模块,整个8月到11月,我一个月最多请一天假,除了真的有考试,几乎天天都在,所有课余时间都奉献给了公司。在整个过程里,领导对我的评价一直很正面,甚至跟我说过,这里会是一个很好的起点。我当时其实手里不止腾讯一个选择,还有好几家好头部大厂和外企给了面试,有的已经到终面,有的已经拿到offer,有些薪资比腾讯还高。但我信任腾讯,觉得一个大厂不会对认认真真干了这么久得到转正的实习生做出撕offer的事。所以我签了腾讯的转正offer,其他的全部婉拒签完之后我的工作量没有任何变化,还照常推项目,甚至一直到被毁约前一周,我收到的是工作上的正面反馈。但就直到上周,我还在项目上工作,就在不久之前还在得到+1对工作质量的认可,在没有任何征兆的情况下,就突然得到HR的通知,说因为部门HC的原因,我的Offer会被撤回,我需要马上签字,不然就会被强行解约。面对这个情况,我至今想不通第一,部门并无大规模变动,同届校招生无一受影响,为何偏偏只对我一个海外院校学生没有三方协议的应届生下手?是不是因为我身份特殊、维权更难,就成了可以随意牺牲的软柿子?第二,腾讯是否算过我付出的巨大机会成本?我从大一就开始实习,辗转各个大厂和知名企业,牺牲了大量课余时间,前前后后做了至少7-8份实习,就是为了毕业能有一份工作。终于拿到腾讯的转正offer,我以为可以安心了。结果呢?春招已经过了大半,我对口的岗位招聘接近尾声,我现在面临的是毕业即失业,甚至可能要延长学业。区区几个月的实习薪水补偿,能弥补我错失的全部机会吗?能弥补这几个月的心血和精神上的打击吗?难道作为头部企业的腾讯,毁约一个校招生的offer就这么随便?我不知道怎么面对父母,怎么面对朋友,怎么面对努力了整整一个学生生涯的的自己!收到毁约通知当天,我在小红书如实发布经历,帖子迅速获得热度,但仅仅几个小时过后,却在无任何违规通知、账号显示正常的情况下,被悄无声息限流屏蔽——只有我自己能看见,外人完全无法点开,后续相关内容也全部被限制流量。我只是一个普通应届生,只是想说出自己的真实遭遇,腾讯到底动用了何种手段,让一个讲述事实的声音被如此压制?我为我的陈述承担一切法律责任收起
行则将至2026:如果事情已经不可改变,现在更重要的还是抓紧投简历,相信以你本身的实习经历,还是有很强的竞争力的
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务