返回首页

故障复盘完全指南 — 从 5-Why 到改进项闭环

📅 创建于 2026-06-24 🔄 更新于 2026-06-24 📝 375 字

来源:不爱笑的青年 | 发布日期:2026-06-22

复盘的价值,不在于写出一份漂亮的报告,而在于同样故障不再发生第二次。

一个真实的教训

某微服务 3 月 15 日发生 OOM Kill,Pod 重启 12 次,业务中断 25 分钟。复盘结论是"内存配置不合理",改进项"将内存限制从 2Gi 调整到 4Gi",责任人研发组长,截止日期 3 月 22 日。

6 月 18 日,同一个服务,同样的 OOM,同样的中断——内存限制从未被调整过。改进项创建后,无人跟踪落地。

复盘报告写了不等于复盘结束了。改进项落地才是复盘的结束。

复盘的认知误区

误区 表现 正确做法
复盘 = 写报告 报告写完就完事 报告是开始,改进项落地才是结束
根因分析 = 追责 "研发的锅""运维的锅" 根因是流程问题,不是人的问题
5-Why = 问 5 次 流于形式,归因"人员意识不足" 追问到可落地的改进项为止
改进项 = 创建就完 无人跟进,下次故障还在 有责任人+截止日+验收标准
复盘会 = 批评会 当事人不敢说真话 对事不对人,聚焦流程

5-Why 分析法 — 追问到可落地的改进项

以 OOM 故障为例:

轮次 问题 答案 可落地?
W1 为什么 OOM? JVM 堆内存用满
W2 为什么堆内存用满? 缓存未设 TTL,数据无限增长
W3 为什么没设 TTL? 写代码时没考虑数据量级
W4 为什么没被早期发现? 监控只有 CPU/内存使用率,无堆内存告警
W5 为什么堆内存告警没配? 监控配置 Checklist 缺少 JVM 内存监控项

可落地的改进项:

  1. 更新监控配置 Checklist,增加 JVM 内存监控项(运维组长,本周五)
  2. 所有微服务添加 JVM 内存监控告警(运维,下周五)
  3. 代码 Review 检查单增加"缓存 TTL 配置"检查项(研发组长,本周五)

关键: 追问到有人能动手去改的一项具体工作时,5-Why 才算结束。

复盘报告 7 要素

章节 内容 示例
① 故障摘要 时间、影响范围、恢复时间 6/18 14:32-14:57,2300+订单受影响
② 时间线 每分钟的关键事件 告警→介入→定位→恢复
③ 根因分析 5-Why 追溯结果 监控 Checklist 缺失 JVM 监控
④ 改进项 措施、责任人、截止日、验收标准 加 JVM 监控(张三,6/25,告警正常触发)
⑤ 经验教训 这次教会我们什么 缓存必须设 TTL;配置要有 Checklist
⑥ 防止再发 确保同类故障不再发生 Code Review 检查单加缓存 TTL 检查项
⑦ 附件 日志、截图、配置 监控截图、Code Review 检查单截图

改进项跟踪闭环

改进项落地才是复盘的句号:

环节 负责 操作
创建 复盘会当场 明确责任人+截止日+验收标准
公示 复盘主持人 会后 24h 内发团队群+知识库
跟进 复盘主持人 每周例会检查进度,阻塞项升级
验收 主持人+Leader 责任人提交验收申请,共同验收
归档 复盘主持人 验收通过后归档到知识库

复盘检查清单

复盘前逐项打勾:

  1. ☐ 故障后 24h 内召开复盘会
  2. ☐ 邀请所有相关方(研发+运维+测试+产品)
  3. ☐ 5-Why 追问到可落地改进项
  4. ☐ 改进项有责任人+截止日+验收标准
  5. ☐ 改进项 24h 内公示
  6. ☐ 定期跟进机制已建立
  7. ☐ 主持人+Leader 共同验收
  8. ☐ 验收通过后归档知识库

关联页面

页面关联点
ops-sre-jargon-guideSRE 核心术语与运维规范,涵盖 SLA/MTTR 等复盘关键指标
devops-interview-guideDevOps 面试常考故障复盘流程
server-performance-four-dimensions服务器性能四维排查法,复盘基础素材
cpu-spike-troubleshooting-guideCPU 飙高全链路排查,常见复盘场景
k8s-rolling-update-pitfallsK8s 滚动更新踩坑集,含真实故障复盘案例