当前位置: 首页 > news >正文

生产级 SOP:vmstat + mpstat + pidstat + perf 四层联动排障决策树 2 - 小镇

生产级 SOP:vmstat + mpstat + pidstat + perf 四层联动排障决策树 2

下面给你一版生产级:线上 load 高 3 分钟自动归因流程(SOP + 阈值 + 分级 + runbook)。目标是:

3 分钟内判断:CPU / IO / 调度 / 锁 / 中断 / 内存,并给出下一步动作


✔ 一、总体设计(3分钟自动归因框架)

T+0s   vmstat  → 判断方向
T+30s  mpstat  → CPU类型确认
T+90s  pidstat → 定进程
T+180s perf    → 定根因

✔ 二、故障分级体系(非常关键)

✔ Level 1:轻微异常(观察)

条件
load < 2×CPU
r ≤ CPU核数
b ≤ 1
cs < 10k/s

👉 动作:观察 + 记录


✔ Level 2:性能下降(需要分析)

条件
load 2~5×CPU
r > CPU核数
b ≤ 2
cs 10k~50k

👉 动作:进入排障 SOP


✔ Level 3:严重故障(必须介入)

条件
load > 5×CPU
r >> CPU核数
b > 2
cs > 50k/s
iowait > 20%

👉 动作:立即处理 / 限流 / 扩容


✔ 三、3分钟自动归因流程(核心 SOP)


✔ Step 1(0~30s):vmstat 定性

vmstat 1

✔ 第一层决策(自动分类)

✔ CPU问题

r > CPU核数

✔ IO问题

b > 2

✔ 调度问题

cs > 50k/s

✔ 内存问题

si/so > 0

✔ 快速决策树

vmstat|+-- r高 → CPU路径+-- b高 → IO路径+-- cs高 → 调度路径+-- si/so → 内存路径

✔ Step 2(30~90s):mpstat 定 CPU 性质

mpstat -P ALL 1

✔ CPU归因规则

✔ CPU型 load

%usr > 80%

👉 业务计算问题


✔ 内核型 load

%sys > 30%

👉 syscall / 锁 / IO间接问题


✔ IO型 load(假CPU)

%wa > 20%

👉 IO阻塞


✔ 中断风暴

%irq + %soft > 10%

👉 网络 / 磁盘中断


✔ Step 3(90~150s):pidstat 定“谁在制造问题”

pidstat -u -w 1

✔ 进程级归因规则

✔ CPU热点进程

%CPU > 80%

✔ 锁竞争进程

nvcswch/s > 20k

✔ IO卡住进程

state = D

✔ 调度风暴进程

cswch + nvcswch > 10k

✔ Step 4(150~180s):perf 根因定位


✔ CPU问题

perf top

或:

perf record -F 99 -ag -- sleep 30
perf report

✔ 判断标准

现象根因
单函数占比高 CPU热点
syscall高 内核开销
futex高 锁竞争

✔ IO问题

perf record -e block:block_rq_issue -a
perf record -e block:block_rq_complete -a

✔ 判断

现象根因
submit_bio IO路径
ext4/xfs 文件系统
nvme driver 硬件瓶颈

✔ 调度问题

perf sched record
perf sched latency

✔ 判断

现象根因
latency高 调度延迟
wakeup多 线程抖动
futex高 锁竞争

✔ 四、完整自动归因引擎(最终版)

LOAD高|+--> vmstat(方向)|+--> CPU → mpstat → pidstat → perf top|+--> IO  → mpstat → pidstat → block trace|+--> 调度 → pidstat → perf sched|+--> 内存 → vmstat si/so

✔ 五、生产级 Runbook(直接可执行)


✔ Runbook 1:CPU打满

vmstat 1
mpstat -P ALL 1
pidstat -u 1
perf top

👉 动作:

  • 找热点函数

  • 限流 / 扩容 / 优化代码


✔ Runbook 2:IO卡死

vmstat 1
iostat -x 1
mpstat -P ALL 1
pidstat -d 1
perf record -e block:* -a

👉 动作:

  • 查磁盘

  • 查慢SQL

  • 查文件系统


✔ Runbook 3:调度风暴

vmstat 1
pidstat -w 1
perf sched record
perf sched latency

👉 动作:

  • 降线程数

  • 修锁竞争

  • 检查线程池


✔ Runbook 4:中断风暴

mpstat -P ALL 1
cat /proc/interrupts

👉 动作:

  • 网卡RSS调整

  • IRQ绑核

  • 限流PPS


✔ Runbook 5:内存问题

vmstat 1
free -m

👉 动作:

  • 检查 swap

  • OOM风险

  • cache回收


✔ 六、最终总结(一句话版)

3分钟排障 = vmstat 定方向 + mpstat 定类型 + pidstat 定进程 + perf 定根因


如果你下一步想再升级,我可以帮你做一个更高级版本:

👉 “自动化脚本版:一键采集 + 自动归因 + 输出故障报告(生产可直接用)”