Skip to content
  1. CPU 飙高 5 步排查手册
步骤命令/工具关键输出
① 定位进程top -H / htop找出 %CPU 最高的 PID/TID
② 转储线程jstack <PID> > cpu.log查看线程状态、锁、死循环
③ 热点方法arthas profiler start --duration 60 或 async-profiler火焰图直接显示最热的栈
④ 内存泄漏jmap -histo:live <PID>看是否对象暴涨导致频繁 GC
⑤ 根因修复见下表

常见根因 & 修复

根因现象修复
死循环火焰图集中在 1 个方法修正业务逻辑
频繁 Young GCEden 区 10 秒一次增大 -Xms/-Xmx 或调比例
大量反射Class.forName 占 30%+ CPU缓存 Method/Field
日志级别误开 DEBUGLog4j2 AsyncAppender 打满改回 INFO 并加采样

  1. 面试一句话模板

“Redis 集群选型:小系统主从,高可用哨兵,海量 Cluster;
死锁用 jstack 搜 deadlock;
CPU 飙高先 top -H 找线程 → jstack 看栈 → async-profiler 火焰图 → 代码或 JVM 参数修复。”