凌晨 3 点,你被监控告警吵醒:线上某核心服务 CPU 使用率突破 95%。用户开始反馈接口超时,此时你只有 15 分钟时间,必须在故障扩散前定位到具体的代码行。本文带你走完从告警到代码行的全链路定位过程。
一、CPU 飙升的常见原因全景图
在动手排查之前,先建立 CPU 飙升原因的全局认知。不同原因对应的排查工具和修复方案完全不同:
┌─────────────────────────────────────────────────────────────┐
│ CPU 飙升原因分类 │
├──────────────┬──────────────┬──────────────┬────────────────┤
│ 代码层面 │ JVM 层面 │ GC 层面 │ 外部因素 │
├──────────────┼──────────────┼──────────────┼────────────────┤
│ 死循环 │ JIT 编译 │ Full GC │ 流量突增 │
│ 正则回溯 │ 类加载开销 │ GC 线程过多 │ 被其他进程挤占 │
│ 高频序列化 │ 线程数过多 │ GC 算法不适配│ 容器 CPU 限制 │
│ 密集计算 │ 锁自旋 │ │ │
│ 递归无终止 │ │ │ │
└──────────────┴──────────────┴──────────────┴────────────────┘
2026/7/3大约 16 分钟