一架客机在深夜巡航时突然失速下坠,警报声瞬间响彻驾驶舱。四十分钟后飞机迫降成功,无人伤亡,但公司市值已蒸发数亿。第二天,事故调查组进驻现场——他们的任务不是追责机长,而是打开黑匣子逐秒回放数据、反复追问“为什么”,直到找出系统最深处的那条裂缝,然后发布整改指令并盯着它彻底关闭。 这套流程,就是民航业的“事故调查”。而在微服务世界里,当你的线上服务也经历了一场“坠机”——接口超时、缓存雪崩、订单积压、告警刷屏——你需要做同样的事:开一次 Postmortem(事后复盘)。这不是批斗会,而是一场以“找病根”为唯一目标的系统调查。本文将带你完整走一遍:复盘模板怎么写、时间线怎么还原、5Whys 怎么挖根因、复盘会怎么开、改进项怎么跟踪闭环。

岗位关联

掌握 Postmortem 方法论,SRE 和微服务运维就能把每一次故障转化成系统体检报告,实现从“救火队员”到“体系化防御者”的职业跃迁。

目录
  1. 可视化演示
  2. 复盘核心理念:坠机之后,先别急着抓人
  3. 复盘模板结构:调查报告的固定骨架
  4. 时间线还原法:重放黑匣子里的每一秒
  5. 五问根因分析:连问五个为什么
  6. 复盘会议组织:让结论长出牙齿
  7. 改进项闭环:让整改指令落地
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示微服务故障复盘的完整流程:时间线还原、5Whys根因分析、改进项跟踪,交互调节分析深度查看MTTR与根因深度变化。

本节配有交互动效(进入视口后自动加载,约 3KB)。

故障时间线还原 检测阶段:告警触发与影响评估 响应阶段:介入诊断与止损操作 MTTR = Detect + Respond + Mitigate + Resolve 精确还原时间线是有效复盘的基础,每个节点需记录时间戳和操作

复盘核心理念:坠机之后,先别急着抓人

飞机失事后,家属最常问的是“谁来负责”,但职业调查组最先做的是封存黑匣子、隔离数据、访谈机组,并公开承诺“不追责个人”。因为他们太清楚:一旦开始抓人,所有人都会忙着藏证据、写免责声明,真相就会被谎言淹没。

微服务故障后的 Postmortem 沿用同样逻辑。一次订单超时背后,可能涉及网关、订单服务、缓存、数据库十几个环节,每个工程师都只是链条上的一颗齿轮。如果复盘第一步是追责,下次故障就没人敢及时上报,只会偷偷重启碰运气。所以 Postmortem 的第一条铁律是:无指责文化——假设每个人都尽了全力,故障仍然会发生,错在系统设计而非个人。

在无指责前提下,Postmortem 是故障后产出的正式文档,记录从发生到恢复的全过程,并提炼改进清单。触发时机通常包括:核心业务不可用、资金损失、数据丢失、安全漏洞,或 SLO 严重违约。衡量复盘价值的底层指标是系统可用性:

就像航空业用“全球事故率”衡量整个体系的健康度,SRE 团队用可用性衡量微服务体系的韧性。每一次复盘,都是在为下一次飞行积累安全边际。

可用性=MTBFMTBF+MTTR×100%\text{可用性} = \frac{\text{MTBF}}{\text{MTBF} + \text{MTTR}} \times 100\%
公式解释:MTBF 是平均无故障时间,MTTR 是平均恢复时间。可用性衡量系统“对外正常服务”的时间占比,Postmortem 的所有改进最终都指向拉长 MTBF、压缩 MTTR。
  1. 分子——健康时长MTBF 是两次故障之间的平均间隔,体现系统的“健康长度”。
    MTBF=总运行时间故障次数\text{MTBF} = \frac{\text{总运行时间}}{\text{故障次数}}
  2. 分母——恢复时长MTTR 是从故障发生到恢复的平均耗时,复盘改进项直接压缩它。
    MTTR=总故障时长故障次数\text{MTTR} = \frac{\text{总故障时长}}{\text{故障次数}}
  3. 整体——时间占比分子除以分子分母之和再乘以 100%,得到月度或年度的可用性百分比。
    可用性=MTBFMTBF+MTTR×100%\text{可用性} = \frac{\text{MTBF}}{\text{MTBF} + \text{MTTR}} \times 100\%

复盘模板结构:调查报告的固定骨架

全球任何一架商用客机出事,调查组交出的报告格式都惊人地相似:航班信息、事件经过、调查发现、原因分析、安全建议。为什么全球统一?因为固定格式是质量的保险丝——它强制调查组无论多忙、多乱,都必须走完同样的检查项,任何一个环节都不允许“忘了查”。

Postmortem 文档也一样,必须套用固定模板。没有模板的复盘会变成散文大赛:有人写流水账,有人写检讨书,有人写技术论文。模板的核心价值是兜住下限——即使是最仓促的复盘,也必须覆盖完整结构:标题与摘要(三句话说清什么时间、什么服务、影响多大)、影响范围、时间线、根因分析、改进项清单。

模板里最先要确定的是故障等级,它决定文档的详细程度和汇报层级:

固定模板就像贴在驾驶舱里的检查单,飞行员靠它对抗慌乱,复盘团队靠它对抗遗忘。当每一格都被认真填满,复盘质量的下限就保住了。

故障等级={P0,核心业务完全不可用P1,核心业务部分受损P2,非核心功能异常\text{故障等级} =\begin{cases}P0, & \text{核心业务完全不可用}\\P1, & \text{核心业务部分受损}\\P2, & \text{非核心功能异常}\end{cases}
公式解释:P0 意味着支付、下单等核心链路全断,需要全员响应并出具完整报告;P1 是部分用户受损;P2 是最轻的异常,报告可以简短。
  1. P0 场景核心业务完全不可用,例如支付链路全断,复盘必须最详尽。
    P0: 核心链路→完全不可用P0:\ \text{核心链路} \rightarrow \text{完全不可用}
  2. P1 场景核心业务部分受损,例如三成用户下单失败,复盘需覆盖主要环节。
    P1: 核心链路→部分受损P1:\ \text{核心链路} \rightarrow \text{部分受损}
  3. P2 场景非核心功能异常,例如推荐列表变慢,简短复盘即可。
    P2: 非核心功能→功能异常P2:\ \text{非核心功能} \rightarrow \text{功能异常}

时间线还原法:重放黑匣子里的每一秒

空难调查官最宝贝的东西是黑匣子,它能记录驾驶舱的每句对话、每个按钮的操作、每块仪表的读数。调查的第一步永远是回放黑匣子,找出“一切开始偏离正常的那个瞬间”。没有这段回放,后面的分析全是猜测。

微服务世界没有实体黑匣子,但“数据黑匣子”无处不在:监控指标曲线、分布式链路追踪、应用日志、网关日志、告警记录、发布变更记录。时间线还原,就是把散落在这些系统里的记忆碎片,按时间顺序拼回一张完整的“事故航迹图”。

还原分四步:确定锚点(选客户或监控首次感知故障的时刻);收集数据(拉取故障前后至少 30 分钟的日志、指标、调用链和变更记录);对齐时间戳(不同服务器时钟可能偏移,必须用 NTP 校准后再比较先后);标注关键节点(告警、发布、扩散、降级、回滚、恢复,每个节点都要有日志证据)。遇到日志缺失的时段,要明确标记为“信息缺口”,而不是用脑补填平。核心计算是每个事件相对锚点的偏移量:

时间线是复盘的承重墙。空难调查组会为一个时间戳的先后较真三天,我们至少也该把“告警先于发布”还是“发布先于告警”钉死——因果顺序一旦颠倒,结论就可能完全反转。

Δti=ti−t锚点\Delta t_i = t_i - t_{\text{锚点}}
公式解释:把每个事件的发生时刻减去锚点时刻,得到相对故障发现的先后顺序。Δt 为负表示事件发生在锚点之前,为正表示在锚点之后。
  1. 确定锚点取首次告警或首次用户反馈的时刻作为基准点。
    t锚点=min⁡i{ti告警}t_{\text{锚点}} = \min_i\{t_i^{\text{告警}}\}
  2. 计算偏移每个事件的时间戳减去锚点时刻,得到相对位移。
    Δti=ti−t锚点\Delta t_i = t_i - t_{\text{锚点}}
  3. 排序成链把所有偏移量从小到大排序,故障演化的先后顺序就呈现出来。
    时间线=sort(Δt0,Δt1,…,Δtn)\text{时间线} = \text{sort}(\Delta t_0, \Delta t_1, \ldots, \Delta t_n)

五问根因分析:连问五个为什么

调查官在听完机长的陈述后,不会质问“你是不是操作失误”,而是会连环追问:为什么失速?因为攻角过大。为什么攻角过大?因为自动配平系统失灵。为什么失灵?因为迎角传感器结冰……每一层“为什么”都像剥洋葱,撕掉一层表象,露出更深的结构。这就是源自丰田生产管理的 5Whys 追问法。

在 Postmortem 里,5Whys 的做法极简:针对故障现象连续追问“为什么”,直到挖出一个可以被证据验证的系统性缺陷。表层原因止步于“代码写错了”,而根本原因要追到“为什么测试没有覆盖这条路径”“为什么评审没有拦住这个改动”。

使用 5Whys 有四个要点:每次只问一层,答案必须基于日志和指标证据;每层答案都要落到具体组件、流程节点或操作步骤上,拒绝“运气不好”这类空话;追问到答案开始指向制度或设计缺陷时即可收手,不必机械问满五层;最后反向验证,从根因正向推导能否解释全部故障现象。因果链可以这样表示:

五层追问的尽头,通常站着一位“沉默的设计缺陷”——它从不出声,却总在深夜准时引爆故障。就像空难挖到尽头往往是某条被忽略的适航规章,找到它,你才有资格写改进项。

现象→Why1原因1→Why2原因2→Why3原因3→Why4原因4→Why5根因\text{现象} \xrightarrow{\text{Why}_1} \text{原因}_1 \xrightarrow{\text{Why}_2} \text{原因}_2 \xrightarrow{\text{Why}_3} \text{原因}_3 \xrightarrow{\text{Why}_4} \text{原因}_4 \xrightarrow{\text{Why}_5} \text{根因}
公式解释:箭头表示“追问一次为什么之后得到的答案”。链条从表层现象出发,每走一步都更接近系统深层缺陷,最终到达根因。
  1. 起点——现象从监控确认的故障表象出发,例如“网关大量 503”。
    起点:网关大量 503\text{起点}: \text{网关大量 503}
  2. 一次追问问为什么 503,得到第一层原因,如“订单服务线程池耗尽”。
    网关 503→Why1线程池耗尽\text{网关 503} \xrightarrow{\text{Why}_1} \text{线程池耗尽}
  3. 逐层递推对每层答案继续追问,形成层层深入的因果链。
    Rk→WhyRk+1R_k \xrightarrow{\text{Why}} R_{k+1}
  4. 终点——验证最后一层根因必须能正向推回所有故障现象,闭环才算成立。
    根因⇒全部故障现象\text{根因} \Rightarrow \text{全部故障现象}

复盘会议组织:让结论长出牙齿

调查报告初稿完成后,调查组会召开一场正式听证会,操作员、工程师、管理层、监管代表围坐一堂,逐条审视报告。听证会有两个目标:确认没有人被冤枉、没有事实被歪曲;让所有相关方对整改建议达成共识。会议不是审判,而是“集体校验”。

复盘会议是 Postmortem 从文档变成行动的枢纽。只有文档没有会议,复盘就只是自我感动;只有会议没有输出,会议就成了茶话会。会议的核心价值,是用集体智慧交叉检验时间线、根因和行动项的合理性,并当场敲定每一件事的负责人与截止时间。

一次高质量复盘会议需要明确四件事。角色分工:主持人控场但不参与技术争论、记录员写纪要、陈述人讲时间线、参会者覆盖开发 QA 运维和值班人。时间控制:建议 60 到 90 分钟,超时内容线下再议。流程固定:开场重申无指责 → 陈述时间线 → 讨论根因 → 确认行动项 → 总结。情绪管理:一旦出现互相指责,主持人立刻用“系统视角”把话题拉回。可以用这个式子度量会议产出:

好的复盘会像一场克制的航空听证会,散会时每个人都觉得“这次事故终于被看透了”。失败的会议则像一场家庭争吵,散会后大家只记得谁被骂了,不记得下一步做什么。

会议产出=确认的行动项数会议时长(小时)\text{会议产出} = \frac{\text{确认的行动项数}}{\text{会议时长(小时)}}
公式解释:分子的行动项必须包含负责人和截止时间,分母是会议小时数。比值越高,说明会议越聚焦于“定行动”,而非“讲故事”。
  1. 分子——确认定义一个行动项必须同时具备负责人和截止时间,才算“确认”。
    确认行动项  ⟺  负责人∧截止时间\text{确认行动项} \iff \text{负责人} \land \text{截止时间}
  2. 分母——时长约束复盘的黄金时长是 60 到 90 分钟,过长会疲劳失真。
    T会议∈[60,90] 分钟T_{\text{会议}} \in [60, 90] \ \text{分钟}
  3. 比值——产出率产出率过低,说明会议停留在争论细节或翻旧账。
    E=N行动项T会议E = \frac{N_{\text{行动项}}}{T_{\text{会议}}}

改进项闭环:让整改指令落地

空难调查报告的最后一章叫“安全建议”。这些建议会升级为监管机构发布的适航指令——具有强制执行力,航空公司必须限期整改、提交证明,否则飞机停飞。这就是改进项的生命力:它从来不是“建议”,而是“指令”。

Postmortem 的改进项如果只活在文档里,复盘的价值就砍半了。改进项跟踪的意义,是把“我们下次一定注意”翻译成“某人在某日前完成某事,并达到可验证的标准”。

做好改进项闭环需要四道工序。优先级排序:用风险优先数(RPN)给所有改进项打分,先做高风险项。唯一负责人:每个改进项只有一个 owner,杜绝“共同负责等于没人负责”。截止时间:细化到日期和里程碑,而不是“尽快”。闭环验证:改进上线后通过压测、演练、监控证明缺陷真的消失;验证失败的改进项要继续迭代。RPN 的计算公式:

航空业有一条铁律:没有形成适航指令的事故报告等同于白写。同样,没有跟踪闭环的 Postmortem 只是一堆漂亮文字。改进项跟踪就是复盘的“强制起落架”,保证每一次调查最终都能平稳落地。

RPN=影响度×发生概率×检测难度\text{RPN} = \text{影响度} \times \text{发生概率} \times \text{检测难度}
公式解释:影响度、发生概率、检测难度三个维度按 1–10 打分,相乘得到 RPN。分值越高,越要优先投入。
  1. 影响度缺陷再次发生会造成多大的用户或资损影响,按 1 到 10 打分。
    I∈[1,10]I \in [1, 10]
  2. 发生概率缺陷再次被触发的可能性,按 1 到 10 打分。
    P∈[1,10]P \in [1, 10]
  3. 检测难度现有监控能否及时发现缺陷,越难发现得分越高。
    D∈[1,10]D \in [1, 10]
  4. 乘积排序三项相乘得到 RPN 值,从高到低排列改进顺序。
    RPN=I×P×D\text{RPN} = I \times P \times D

AI 应用场景

场景一:AI 辅助时间线自动初稿

阶段:故障诊断 / 数据聚合

解决的问题:传统复盘最大的痛点是人工翻日志拼时间线,动辄两三个小时,还容易漏事件。AI 可以把故障窗口内的日志、告警、变更记录聚合后,自动生成结构化时间线初稿,相当于给调查组配了一个“黑匣子自动解码员”。

具体案例:某电商平台 SRE 在 618 大促故障后,把故障前后 30 分钟的网关日志、链路追踪和发布记录交给大模型,AI 在 5 分钟内输出带时间戳的事件链草稿。工程师只花 20 分钟校对,就完成了原本需要大半天的时序还原。

场景二:历史故障知识库辅助根因假设

阶段:根因分析 / 知识检索

解决的问题:5Whys 依赖个人经验,新人往往问到第二层就卡壳。AI 可以检索历史 Postmortem 知识库,针对当前症状给出高概率根因假设,为 5Whys 指明方向。

具体案例:某金融公司搭建故障知识库后,用向量检索把当前故障现象与历史 200 份 Postmortem 比对,AI 提示“与 3 月份的缓存雪崩场景相似度 92%”,工程师顺着这条线索一次追问就锁定了根因。

场景三:复盘报告摘要自动生成

阶段:汇报与沉淀

解决的问题:P0 级故障需要给管理层和客户出具对外说明,传统方式下工程师在战后的疲惫中还要加班写摘要。AI 可以把完整 Postmortem 压缩成“时间、影响、根因、行动项”四要素简报。

具体案例:某云厂商在 P1 故障后,AI 自动将 15 页 Postmortem 压缩为一页管理层简报,并生成给客户的双语致歉说明草稿,经人工审核后 30 分钟内发出,显著缩短了对外响应时间。

Python 演示

python60 行
# -*- coding: utf-8 -*-"""故障复盘小助手: 时间线还原 + 5Whys 因果链 + RPN 优先级"""from datetime import datetime  def build_timeline(events, anchor):    """把事件按相对锚点的时间差排序, 得到还原后的时间线"""    timeline = []    for name, ts in events:        dt = datetime.fromisoformat(ts)        delta = int((dt - anchor).total_seconds())        timeline.append((delta, name))    timeline.sort(key=lambda x: x[0])    return timeline  def apply_5whys(symptom, causes):    """把表象和 5 层原因串成一条因果链"""    chain = symptom    for i, cause in enumerate(causes, 1):        chain += " --Why%d--> " % i + cause    return chain  def calc_rpn(impact, probability, detectability):    """RPN = 影响度 x 发生概率 x 检测难度"""    return impact * probability * detectability  def main():    anchor = datetime.fromisoformat("2025-06-01T14:30:00")    events = [        ("部署新版本", "2025-06-01T14:00:00"),        ("告警: 5xx比例升高", "2025-06-01T14:31:00"),        ("订单服务超时", "2025-06-01T14:32:00"),        ("缓存连接数打满", "2025-06-01T14:35:00"),        ("回滚到上一版本", "2025-06-01T14:50:00"),        ("监控恢复绿色", "2025-06-01T15:05:00"),    ]    print("=== 时间线还原 ===")    for delta, name in build_timeline(events, anchor):        tag = "故障前" if delta <= 0 else "故障后"        print("%4d秒 [%s] %s" % (delta, tag, name))     print("\n=== 5Whys 因果链 ===")    causes = [        "订单服务线程池耗尽",        "下游缓存连接等待超时",        "缓存集群CPU满载",        "热点key流量暴增",        "缺少热点key限流保护",    ]    print(apply_5whys("订单大量超时", causes))     print("\n=== 行动项优先级 ===")    print("RPN = 8 x 7 x 6 =", calc_rpn(8, 7, 6))  if __name__ == "__main__":    main()
目的:演示 Postmortem 的核心三步——把事件列表还原为相对时间线、用 5Whys 串出因果链、按 RPN 计算行动项优先级。直接运行即可看到完整输出。
  1. delta = int((dt - anchor).total_seconds())以锚点为基准,把每个事件转成相对秒数,负数为故障前、正数为故障后。
  2. timeline.sort(key=lambda x: x[0])按时间差排序,还原出故障演化的先后顺序。
  3. chain += " --Why%d--> " % i + cause用箭头把每层“为什么”串成一条因果链。
  4. return impact * probability * detectability影响度、发生概率、检测难度三个维度相乘得到 RPN。
  5. print("%4d秒 [%s] %s" % (delta, tag, name))格式化输出时间线的每一行,故障前后的区分一眼可见。
  6. if __name__ == "__main__":可执行入口,直接运行即可演示完整流程。

常见误区

误区一想到要开复盘会就紧张,觉得这就是来找责任人背锅的,谁值班谁倒霉,得提前准备好“解释的话术”,避免在会上被围攻。

正解恰恰相反,Postmortem 的第一原则是无指责文化,就像空难调查组不会先抓飞行员,而是先假设每个人都尽了全力、错在系统设计。把故障归因到个人只会让团队隐藏证据、美化操作,最终受伤的是系统本身。真正该被深挖的是有缺陷的流程、设计和监控盲区。

为何常见:因为传统的事故通报会确实常以问责和处罚收场,人们把旧习气投射到了 Postmortem 上,一听“复盘”就自动切换到防御姿态。

误区以为“5Whys“的意思是必须问满五次,哪怕第三层已经找到明确原因,也要凑满五个”为什么”。

正解5Whys 的精髓是“深度”而非“次数”。如果某一层答案已经指向可验证的系统设计缺陷(比如“缺少热点 key 限流保护”),且能正向解释全部现象,就可以停止。反之,如果问满五层还在“沟通不畅”“人手不足”这类空话上打转,说明追问方向偏了,需要回到证据重新来。

为何常见:方法名叫“5Whys“,初学者很容易把”5“当成硬性次数要求,而忽略了它其实是”建议追问到足够深”的隐喻。

误区复盘时大家围坐一圈,“我记得当时大概两点半告警响了”,谁记得清就听谁的,记不清的地方大家凭印象补。

正解时间线是复盘的地基,必须来自告警记录、日志、链路追踪、变更记录等客观数据。人在高压场景下的记忆严重不可靠,航空调查只信黑匣子不信证词。正确做法是像查案一样:先拉数据,再拼时间线,最后让当事人确认,缺数据的时段标记为“信息缺口”。

为何常见:因为拉日志要花时间,而“回忆”是零成本的;在疲惫的故障之后,人们本能地想走捷径。

误区Postmortem 文档一提交,任务就结束了,改进项列表躺在 JIRA 里再也没人看,直到第二次一模一样的故障重演。

正解改进项必须有唯一负责人、截止日期和验收标准,并通过定期跟踪闭环验证效果。就像适航指令不执行飞机就要停飞,改进项不落地意味着同样的故障随时会再来。复盘真正的“完成”,是改进项全部关闭并验证生效的那一刻。

为何常见:因为“写文档”是当下就能完成的有形产出,而“改系统”是漫长且需要协调的无形苦功,大脑容易把前者误当作终点。

误区故障终于恢复了,先松一口气,复盘等下周有空再说,结果拖着拖着就没了下文。

正解恢复只是“救灾结束”,复盘才是“调查开始”。拖得越久,日志被滚动覆盖、告警被清理、当事人的记忆被新工作冲淡,证据流失越严重。航空调查讲究“黄金 72 小时”,故障复盘也应该在 48 小时内启动,趁热打铁才能拿到最完整的事实。

为何常见:故障后团队筋疲力尽,大脑本能地回避再次面对创伤体验,于是把“缓一缓”当成了“再等等”的理由。

面试题

Q1. Postmortem 复盘的核心理念是什么?

单选题 · easy

  • A.无指责地找出系统缺陷← 正确答案
  • B.找出责任人并处罚
  • C.记录故障时长用于考核
  • D.生成告警规则的依据

答案:A。Postmortem 的第一原则是无指责文化,它借用的是航空事故调查逻辑:先假设每个人都尽了全力,错在系统设计。B 是传统问责思维,C 和 D 都不是复盘的核心目的。

Q2. 下列哪项代表“平均恢复时间”?

单选题 · easy

  • A.MTBF 平均无故障时间
  • B.MTTR 平均恢复时间← 正确答案
  • C.SLO 服务等级目标
  • D.RPN 风险优先数

答案:B。MTTR(Mean Time To Recover)是平均恢复时间,对应可用性公式的分母;MTBF 是平均无故障时间,对应分子。记忆口诀:带 F(Failure)的是两次故障之间,带 R(Recover)的是恢复时长。

Q3. 服务监控恢复绿色后,团队最该做的是?

单选题 · easy

  • A.立即解散值守群并下班
  • B.四十八小时内启动复盘← 正确答案
  • C.直接回滚代码并修复缺陷
  • D.把可用性指标调低重新计

答案:B。监控恢复只代表“救灾结束”,复盘要趁热打铁。故障复盘应在 48 小时内启动,否则日志滚动覆盖、记忆模糊,证据大量流失。A 是松懈心态,C 是改进项动作而非复盘本身,D 是自欺欺人。

Q4. 时间线还原时,下列哪项数据最不可靠?

单选题 · mid

  • A.值班人员的口头回忆← 正确答案
  • B.告警系统的触发记录
  • C.应用服务的访问日志
  • D.链路追踪的调用数据

答案:A。人的记忆在高压场景下严重失真,尤其对时间先后特别不可靠。时间线必须以告警记录、访问日志、链路追踪等客观数据为准,就像空难调查只信黑匣子不信回忆。

Q5. 5Whys 分析中,合理的停止条件有哪些?

多选题 · mid

  • A.答案指向可验证的系统缺陷← 正确答案
  • B.根因能正向推回故障现象← 正确答案
  • C.必须问满五层才能停止
  • D.证据足以支撑当前结论← 正确答案

答案:ABD。5Whys 的停止条件是“答案可验证且能正向解释现象”,而不是机械地问满五层。C 把"5"当次数要求是典型误解;问满五层还停在空话上说明追问方向偏了。

Q6. 复盘会议中,主持人的核心职责是?

单选题 · mid

  • A.判断技术方案是否合理
  • B.控制节奏并维护无指责氛围← 正确答案
  • C.亲自还原故障的时间线
  • D.直接决定改进项负责人

答案:B。主持人的核心职责是控场和维护无指责氛围,不参与技术判断,否则容易偏袒某一方。技术方案由团队讨论,时间线由陈述人还原,负责人由团队共同议定后当场确认。

Q7. RPN 优先级评估的三个维度是?

单选题 · hard

  • A.影响度、发生概率、检测难度← 正确答案
  • B.严重度、预估工时、团队规模
  • C.故障时长、告警次数、用户量
  • D.代码行数、发布频率、依赖数

答案:A。RPN = 影响度 × 发生概率 × 检测难度,三项按 1–10 打分相乘,是 FMEA 里的经典风险评分法。B、C、D 分别混入了工时、观感类指标,与风险优先无关。

Q8. 无指责文化的正确做法包括?

多选题 · hard

  • A.假设每个人都尽力而为← 正确答案
  • B.聚焦系统与流程缺陷← 正确答案
  • C.不记录人为操作的证据
  • D.复盘会避免人身攻击← 正确答案

答案:ABD。无指责文化要求聚焦系统与流程缺陷、假设个人尽力、复盘会避免人身攻击。但“不记录人为操作的证据”是误读——人工操作的时间、动作、决策都要如实记录进时间线,只是不做责任定性。

Q9. 改进项闭环跟踪需要哪些要素?

多选题 · hard

  • A.唯一的负责人← 正确答案
  • B.具体的截止日期← 正确答案
  • C.明确的验收标准← 正确答案
  • D.只写进文档即可

答案:ABC。改进项闭环必须同时具备唯一负责人、截止日期和验收标准,缺一不可。D“只写进文档”正是常见的半途而废,没有跟踪的改进项等于没有改进。

Q10. 时间线显示告警先于部署发生,此时应当?

单选题 · extreme

  • A.以此否定部署操作是诱因
  • B.直接采信告警时间作锚点
  • C.核查告警与部署的时钟偏移← 正确答案
  • D.忽略时间线直接讨论根因

答案:C。各服务器时钟可能存在偏移,“告警先于部署”可能只是假象。必须先核查两个系统的时间戳是否经过 NTP 校准,再判断先后关系。这正是时间线还原中“时间戳对齐”的意义——因果顺序一错,根因就可能完全反转。