CPU 100% 故障定位指导手册

适用场景: 告警系统上报 CPU 使用率超过阈值, 需逐层定位至代码行级 前置知识: Linux 进程/线程模型, CPU 时间片调度, JVM 线程模型 一、为什么需要四层诊断模型 1.1 理论依据: 故障定位的"层级原则" 一个 CPU 告警可能由多个层面的问题引起, 每一层需要不同的工具来观测: 系统层 (kernel) → /proc/stat, vmstat — 看调度队列和 CPU 时间分配 进程层 (process) → top, /proc/<pid>/stat — 看进程级别的 CPU 消耗 线程层 (thread) → top -H, /proc/<pid>/task — 看线程级别的 CPU 消耗 代码层 (code) → jstack, perf, Arthas — 看具体的执行方法/指令 选择依据: 每一层只看上一层无法提供的信息。系统层告诉你"CPU 在忙", 但不告诉你是谁; 进程层告诉你"是 PID 172 在忙", 但如果你直接跳到代码层(比如盲目 jstack), 你拿到 30 个线程的栈, 却不知道该看哪一个——这就是为什么需要线程层: 先找到具体的线程 TID, 再精准定位。 ...

2026-06-13 · 陈曦