Files
nexus/wiki/concepts/FiveWhys.md
2026-05-03 05:42:12 +08:00

77 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Five Whys"
type: concept
tags: [root-cause-analysis, incident-management, reliability]
last_updated: 2026-05-01
---
## Definition
5 问法Five Whys是一种迭代式根因分析技术通过连续追问"为什么"Why五层或更多穿透表面现象找到系统性根本原因。最初由丰田汽车的大野耐一在精益制造中提出现广泛应用于可靠性工程和事故管理。
## Core Method
从观察到的**问题(症状)**开始,连续追问"为什么",直到找到:
- 一个可采取行动的**根本原因**root cause
- 或一个**系统性缺口**systemic gap
### 经典示例
> **问题**:网站宕机了。
| 层级 | 问法 | 回答 |
|------|------|------|
| 1 | 为什么网站宕机了? | 应用服务器无响应 |
| 2 | 为什么服务器无响应? | 数据库连接池耗尽 |
| 3 | 为什么连接池耗尽? | 一个慢查询锁住了所有连接 |
| 4 | 为什么慢查询没有被检测? | 没有查询超时限制和监控 |
| 5 | **为什么没有超时限制?** | 配置变更流程中没有强制要求 |
> **根因**:配置变更流程缺少数据库安全门(超时限制验证)
## Application in Incident Post-Mortem
在 [[BlamelessPostMortem]] 中的 5 Why 使用:
1. **保持中立**:避免使用指责性语言
2. **聚焦系统**:问"系统/流程允许了什么"而非"谁做错了"
3. **不止五层**:有时需要 6-7 层才能到达系统性根因
4. **验证**:用 [[FaultTreeAnalysis]] 交叉验证 5 Why 结论
## Relationship with Fault Tree Analysis
| 维度 | Five Whys | Fault Tree Analysis |
|------|-----------|---------------------|
| 方向 | 自下而上(症状→根因) | 自上而下(顶事件→叶事件) |
| 适用场景 | 已知单一事故 | 复杂、多因故障链 |
| 协作性 | 团队讨论式 | 结构化图形化 |
| 互补性 | 可结合使用FTA 识别多因5 Why 挖掘每个原因 | |
## Key Principles
### Do应该做
- 从具体可观察的事实开始
- 每个回答都基于证据,而非假设
- 继续追问直到找到**系统层面**的原因
- 在团队环境中使用(多元视角更有效)
### Don't不应该做
- 不停在第一个"合理"答案就停止
- 归咎于个人("因为某人操作失误"
- 假设自动化可以解决所有问题
- 不验证答案是否与数据一致
## Anti-Patterns
| 错误 | 原因 | 修正 |
|------|------|------|
| "因为人员疏忽" | 永远指向根因,但无行动价值 | 追问:系统为什么允许疏忽发生? |
| "需要更好的监控" | 泛泛而谈,缺乏可落地性 | 具体:哪种监控,触发什么行动? |
| "因为云厂商问题" | 外部归因,无法控制 | 追问:为什么没有灾备方案? |
## Related Concepts
- [[BlamelessPostMortem]] — 5 Why 是无责复盘的核心根因分析工具
- [[FaultTreeAnalysis]] — 可与 5 Why 互补使用的结构化分析
- [[DORA-Metrics]] — 量化事故影响,为复盘提供数据支撑
## Sources
- [[engineering-incident-response-commander]]