故障模式与影响分析(FMEA)

FMEA 这玩意儿,说白了就是「事前找茬」。

系统还没上线,代码还没跑起来,我们就得坐下来,把可能出问题的地方一个个揪出来。我刚开始做稳定性工作时,总觉得这是浪费时间——有这功夫不如多写几行代码。直到有一次线上事故,事后复盘发现,如果提前做过 FMEA,那个问题根本不会发生。嗯,从那以后,我再也不敢跳过这个步骤了。

FMEA 基础概念

FMEA 的全称是 Failure Mode and Effects Analysis,中文叫「故障模式与影响分析」。它是一套系统化的方法,用来识别潜在的故障模式,分析它们的影响,然后制定措施来降低风险。

核心就三个问题:

  • 什么东西会坏?(故障模式)
  • 坏了会怎样?(影响分析)
  • 我们该怎么办?(改进措施)

你想想看,这其实跟医生看病很像。先问症状(故障模式),再判断病情严重程度(影响),最后开药方(改进措施)。

FMEA 有几个关键角色:

  • 功能:系统或组件应该做什么
  • 故障模式:功能失效的具体表现
  • 影响:故障对系统、用户或业务造成的后果
  • 原因:导致故障发生的根本原因
  • 控制措施:预防或检测故障的手段

我的经验:做 FMEA 时最容易犯的错,是把「故障模式」和「原因」混为一谈。比如「数据库连接超时」是故障模式,而「连接池配置过小」才是原因。分清这两者,后续的改进措施才能对症下药。

严重度 / 频度 / 探测度评分标准

FMEA 的核心是三个维度的评分:严重度(S)、频度(O)、探测度(D)。每个维度 1-10 分,分数越高越危险。

严重度(Severity)

故障发生后,对系统或用户的影响程度。说白了就是「这事儿有多严重」。

评分 描述 示例
1-2 几乎无影响,用户无感知 页面加载慢 100ms
3-4 轻微影响,部分功能降级 某个非核心按钮不可用
5-6 中等影响,核心功能受损 下单流程中断,但数据不丢
7-8 严重影响,系统不可用 全站 502,持续 10 分钟
9-10 灾难性影响,数据丢失或资损 用户余额清零,无法恢复

注意:严重度评分只考虑故障本身的影响,不考虑它发生的概率。我曾经见过有人把「概率低」的故障严重度打低分,这是不对的。严重度只看后果,不看运气。

频度(Occurrence)

故障发生的可能性。说白了就是「这事儿多久来一次」。

评分 描述 参考概率
1 几乎不可能发生 < 1/10000
2-3 很少发生 1/10000 - 1/1000
4-6 偶尔发生 1/1000 - 1/100
7-8 经常发生 1/100 - 1/10
9-10 几乎必然发生 > 1/10

频度评分要基于历史数据和经验判断。我个人的习惯是,先看线上监控数据,如果没有数据,就参考类似系统的故障频率。

探测度(Detection)

故障被发现的难易程度。说白了就是「出事了多久能发现」。

评分 描述 示例
1 几乎肯定能被发现 有自动化告警,秒级响应
2-3 容易被发现 有监控,但延迟几分钟
4-6 可能被发现 需要人工巡检才能发现
7-8 很难被发现 用户投诉后才知晓
9-10 几乎不可能被发现 数据静默错误,无任何告警

避坑指南:我曾经在一个项目中,把探测度打得很低,因为「我们有完善的监控」。结果上线后才发现,监控虽然配了,但告警阈值设得太高,故障持续了半小时才触发告警。所以,探测度评分要基于实际验证,而不是「理论上应该有」。

RPN 风险优先级计算

RPN 的全称是 Risk Priority Number,风险优先级数。计算公式很简单:

RPN = 严重度(S) × 频度(O) × 探测度(D)

三个维度的分数相乘,得到一个 1 到 1000 之间的数值。数值越大,风险越高,越需要优先处理。

举个例子:

  • 某个故障的严重度是 8(严重影响),频度是 5(偶尔发生),探测度是 3(容易被发现)
  • RPN = 8 × 5 × 3 = 120

另一个故障:

  • 严重度是 4(轻微影响),频度是 9(几乎必然发生),探测度是 8(很难被发现)
  • RPN = 4 × 9 × 8 = 288

你看,第二个故障虽然严重度低,但因为频度高、难发现,RPN 反而更高。这就是 RPN 的价值——它帮你找到那些「不起眼但很要命」的风险。

我的经验:RPN 只是一个参考值,不要迷信它。我见过有人把 RPN 阈值设为 200,低于 200 的就不管了。结果有个故障 RPN 只有 180,但严重度是 10(灾难性),只是频度和探测度低。后来这个故障真的发生了,损失惨重。所以,严重度高的故障,即使 RPN 不高,也要重点关注。

下面这张图展示了 FMEA 的核心流程:

FMEA 核心流程 识别功能 分析故障模式 评分 S / O / D 计算 RPN 制定改进措施 关键原则 • 严重度高的优先处理 • RPN 是参考,不是铁律 • 持续迭代,不是一次性的 持续改进

做完 FMEA 后,你会得到一张表格,里面列出了所有潜在的故障模式、它们的 S/O/D 评分、RPN 值,以及对应的改进措施。这张表就是你的「风险地图」,后续的稳定性工作都要围绕它来展开。

我的习惯:FMEA 不是做一次就完事了。系统在变,业务在变,风险也在变。我建议每半年或每次大版本发布前,重新审视一次 FMEA 表格。你会发现,有些之前认为高风险的问题已经被解决了,而新的风险又冒出来了。