想象你在管家里的账。月初发工资,你先划出房租、伙食、储蓄,剩下的“娱乐零花钱”就是这个月可以自由挥霍的额度——花光了就只能宅家,月底还有富余就能吃顿好的。这套逻辑放到软件系统里,就是 Google 提出的“错误预算”(Error Budget):先和系统约定一个“可用性目标”(SLO),算出这个月能容忍多少次故障,再用监控这个“家庭账本”实时记账。预算充足,研发可以大胆发版;预算见底,就冻结高风险发布、专心修锅。至于怎么把新版本安全地推上线——滚动发布像一件件换家具,蓝绿发布像搬新家留旧房,金丝雀发布像先买一把试用椅试试手感。这篇文章,我们就沿着“家庭理财”这条线,把 SRE 可靠性工程的错误预算与发布策略讲透。

岗位关联

掌握错误预算与发布策略,是后端工程师与 SRE 迈向高阶的必修课:它让你不再靠感觉判断系统稳不稳,而是用一套可量化、可操作的流程,把可靠性与研发效率同时握在手里。

目录
  1. 可视化演示
  2. SRE核心概念
  3. 错误预算原理
  4. 可观测性体系
  5. 发布策略种类
  6. 发布风险控制
  7. 实践与流程
  8. 组织与文化
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

三步展示SRE错误预算机制:SLO推导错误预算、监控-计算-决策循环、以及预算充足可发布与耗尽冻结的发布策略。

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

错误预算定义 SLO: 服务目标 预算:1-SLO 发布:消费预算 Budget=1-SLO 把可靠性转为可量化资源。

SRE核心概念

怎么判断一个家庭“过得好不好”?有人看心情,有人看存折,但真正的标准是:收入能不能稳定覆盖支出。系统也一样——如果只说“系统好像挺稳的”,那就还停留在玄学阶段。SRE(站点可靠性工程)的使命,就是给“稳不稳”这件事配一把尺子、定一条线,让可靠性能被讨论、被度量、被管理。

这把尺子叫 SLI(服务水平指标),那条线叫 SLO(服务水平目标),而错误预算则是“偶尔生一点小病也 OK”的缓冲额度。三者环环相扣:没有 SLI,你连系统现在好不好都不知道;没有 SLO,你无法判断好坏是否越界;没有错误预算,研发和运维永远在为“能不能发布”吵架。

衡量可靠性最经典的模型来自运维领域,由两个时间组成:MTBF(平均无故障时间)指系统两次故障之间连续正常工作的平均时长,MTTR(平均恢复时间)指每次故障从发生到恢复的平均耗时。把两者组装起来,就得到了核心指标——可用性:

放到家庭场景里:健康度 = 不生病的日子 ÷(不生病的日子 + 生病的日子)。你没法让家人永远不生病,但可以让每次生病都好得快一点、间隔更久一点——SRE 的日常工作,本质上就是提高 MTBF、压缩 MTTR。

A=MTBFMTBF+MTTR\displaystyle A = \frac{MTBF}{MTBF + MTTR}
可用性 = 正常工作的时长 ÷(正常工作时长 + 故障恢复时长),它衡量的是系统在生命周期里“处于可用状态”的比例。
  1. MTBF(平均无故障时间)系统连续正常运行的平均时长,越长说明系统越“皮实”。
    MTBFMTBF
  2. MTTR(平均恢复时间)故障发生后从发现到恢复的平均耗时,越短说明团队“救火”越快。
    MTTRMTTR
  3. 可用性合成把正常时长放在分子上、周期总时长放在分母上,得到用户真实感受到的可用比例。
    A=MTBFMTBF+MTTR\displaystyle A = \frac{MTBF}{MTBF + MTTR}

错误预算原理

有了健康线,就能定“零花钱”。家庭理财里,每月娱乐开销是有额度的,花超了就得节衣缩食。错误预算完全同理:SLO 定下 99.9% 的可用性目标后,剩下的 0.1% 就是系统这个月可以“挥霍”的失败额度——失败的请求、慢请求、宕机分钟,都从这笔额度里扣。

错误预算最巧妙的地方,在于把“可靠性目标”翻译成了“可消耗的资源”。预算没用完,研发放心发布新功能;预算用完,发布冻结,全组转入稳定性修复。它让原本对立的两个目标——“要快”和“要稳”——有了统一的换算单位,谁也不用说服谁,看数字就行。

计算错误预算只需一次减法,再把比例换算成具体的分钟数:

这就像你规定自己“这个月娱乐开销最多两千块”——心里有数,花起来才不慌;一旦超支,就自动进入“省钱模式”,直到下个月额度重新发放。错误预算也是按月滚动、自动恢复的。

Error Budget=1−SLOError\ Budget = 1 - SLO
30×24×60×(1−0.999)=43.2 分钟\displaystyle 30 \times 24 \times 60 \times (1 - 0.999) = 43.2 \ \text{分钟}
一个 30 天的月份共有 43200 分钟;SLO 定为 99.9% 时,允许的总停机时间只有约 43 分钟。
  1. 错误预算定义错误预算等于 1 减去 SLO,代表系统可以容忍的失败比例。
    Error Budget=1−SLOError\ Budget = 1 - SLO
  2. 月度总分钟数30 天 × 每天 24 小时 × 每小时 60 分钟,得到换算基数。
    30×24×60=4320030 \times 24 \times 60 = 43200
  3. 代入 99.9%将 0.1% 的失败比例乘上总分钟数,得到每月最多可宕机约 43 分钟。
    43200×(1−0.999)=43.2\displaystyle 43200 \times (1 - 0.999) = 43.2

可观测性体系

记账不能等到月底。家庭理财最怕“钱花光了才知道”,所以要随手记账、实时看余额。系统也是一样——决定要不要发布、要不要回滚,靠的不是事后翻聊天记录,而是实时、准确、立体的可观测性数据。

可观测性有三大支柱:指标(Metrics)回答“现在有多快、多健康”,日志(Logs)回答“刚才到底发生了什么”,追踪(Traces)回答“一个请求经过了哪些服务、卡在哪个环节”。三者配合,相当于同时拥有了账本、流水和发票:指标发现异常,日志定位原因,追踪梳理链路。

其中最核心的度量是 SLI,最常见的 SLI 是请求成功率。它反映系统真实的服务水平:

账本记得越细,“这个月还能不能买新沙发”的答案就越有底气。同理,可观测性做得越扎实,错误预算的计算就越可信,发布决策就越果断。

SLI=成功请求数总请求数\displaystyle SLI = \frac{\text{成功请求数}}{\text{总请求数}}
SLI 是“实际好不好”的测量值,SLO 是“应该有多好”的目标值;SLI 与 SLO 的对比,决定了错误预算的剩余量。
  1. 分子(成功请求数)在统计窗口内返回成功的请求数量,例如 HTTP 2xx 响应。
    成功请求数\text{成功请求数}
  2. 分母(总请求数)所有进入系统的请求,无论成功失败、无论耗时长短都计算在内。
    总请求数\text{总请求数}
  3. 比率计算两者相除得到 0 到 1 之间的成功率,再与 SLO 比较判断是否达标。
    SLI=成功请求数总请求数\displaystyle SLI = \frac{\text{成功请求数}}{\text{总请求数}}

发布策略种类

买大件家具有几种思路:一次性把旧家具全扔了换新(惊险);一件一件慢慢换(稳妥但漫长);先租好新房、搬完再退旧房(安全但费钱);先买一把试用椅坐一周(精明)。发布策略的四种主流玩法,恰恰是这些思路的翻版。

滚动发布把集群分成若干批次,逐批替换旧版本,像一件件换家具;蓝绿发布同时维护新旧两套环境,切换只在一瞬间,像搬新家留旧房;金丝雀发布先让新版本接收 5% 的流量“试坐”,观察无恙再放量;灰度发布则是按用户或流量比例渐进推进。实际生产里,这些策略经常组合使用:金丝雀试错 + 逐步灰度放大。

金丝雀阶段最关键的决策是流量比例——放太少了测不出问题,放太多了风险增大。它的风险模型可以用加权可用性来描述:

先买一把椅子坐一周,确定舒服再整套搬回家——金丝雀发布就是这个逻辑:用 5% 的流量换取一次“提前发现翻车”的机会,代价极小,收益极大。

A整体=p新×A新+(1−p新)×A旧\displaystyle A_{整体} = p_{新} \times A_{新} + (1 - p_{新}) \times A_{旧}
整体可用性 = 新版本可用性 × 新版本流量占比 + 旧版本可用性 × 旧版本流量占比;占比越高,整体越依赖新版本的稳定性。
  1. 新版本权重 pp 是分配给新版本的流量比例,金丝雀阶段通常很小,如 5%。
    p新=0.05p_{新} = 0.05
  2. 加权合成整体可用性等于新旧两版可用性按流量比例加权求和。
    A整体=p新×A新+(1−p新)×A旧\displaystyle A_{整体} = p_{新} \times A_{新} + (1 - p_{新}) \times A_{旧}
  3. 逐步放量观察指标健康后,把 p 从 5% 提升到 50% 再到 100%,完成全部接管。
    p: 0.05→0.5→1.0p: \ 0.05 \rightarrow 0.5 \rightarrow 1.0

发布风险控制

家具买回来发现塌了怎么办?聪明的做法是保留发票、约定退货期。发布也一样:所有花哨的发布策略,底气都来自同一个保底能力——随时能回到上一版的回滚。没有回滚的发布,就像没有退货条款的网购,全凭运气。

自动回滚依赖监控信号驱动:当新版本的错误率显著超过发布前的基线时,系统自动切回旧版本,全程无需人工干预。熔断则是在下游服务不堪重负时主动拒绝请求,保护整个链路不被拖垮;限流削峰填充谷,让流量更平滑。此外还要选好发布窗口——把变更安排到流量低峰期,把爆炸半径压到最小。

回滚触发条件可以被形式化:设旧版本错误率为基准,新版本错误率一旦超过“基准 × 安全阈值”,立即回滚:

有“七天无理由退货”兜底,你才敢放心下单新家具——自动回滚就是系统的七天无理由。它把一次失败的发布从“事故”降级为“插曲”。

e新>e旧×(1+threshold)⇒触发回滚e_{新} > e_{旧} \times (1 + threshold) \Rightarrow \text{触发回滚}
当新版本错误率超过旧版本错误率乘以安全阈值时,系统判定新版本“不合格”,自动回滚到旧版本。
  1. 新旧错误率对比e_新 是新版本实际错误率,e_旧 是发布前的基线错误率。
    e新, e旧e_{新},\ e_{旧}
  2. 安全阈值threshold 是允许的相对恶化幅度,例如 1.0 表示允许错误率翻一倍。
    threshold=1.0threshold = 1.0
  3. 回滚判定新版本错误率超过旧版本一倍以上,立即自动回滚,避免影响扩大。
    e新>2×e旧\displaystyle e_{新} > 2 \times e_{旧}

实践与流程

记账之后要定期看报表。家庭理财每月末都要复盘:哪类开销超了?下个月怎么调整?SRE 的实践流程同样是一个闭环:值班响应确保故障有人第一时间处理,故障复盘把每次事故变成改进素材,容量规划提前预判资源瓶颈。

这个闭环里最关键的动作是盯住“烧钱速度”。错误预算不是月底才结算的,而是需要全程实时监控——如果预算只剩一半而时间才过了四分之一,说明消耗太快,必须立刻收紧发布节奏。SRE 用 Burn Rate(燃烧速率)量化这个速度:

就像“才到月中,娱乐经费已经花掉 80%”,这时候谁再提买新家具,全家都会瞪他。燃烧速率就是家庭账本上的那个醒目红字:它提醒团队,节奏该踩刹车了。

Burn Rate=1−SLI实际1−SLO\displaystyle Burn\ Rate = \frac{1 - SLI_{实际}}{1 - SLO}
燃烧速率 = 实际失败率 ÷ 允许失败率。大于 1 说明预算消耗快于预期,大于 2 则触发紧急止血。
  1. 实际失败率分子 1 − SLI_实际 是系统当前真实发生的失败比例。
    1−SLI实际1 - SLI_{实际}
  2. 允许失败率分母 1 − SLO 是系统允许的失败比例,也就是错误预算本身。
    1−SLO1 - SLO
  3. 速率判定比值大于 1 说明消耗超前,大于 2 说明预算将在月底前耗尽,必须马上冻结。
    Burn Rate=1−SLI实际1−SLO>2\displaystyle Burn\ Rate = \frac{1 - SLI_{实际}}{1 - SLO} > 2

组织与文化

再好的账本,没人执行也是摆设。错误预算与发布策略真正落地,靠的不是工具,而是组织文化与协作流程。SRE 团队就是那个“管账的人”,研发团队是“花钱的人”——双方必须共同制定预算、共同认领责任,而不是出了故障互相甩锅。

在成熟的 SRE 文化里,预算沟通变成一门技术:研发想知道“还能发几个版本”,SRE 想知道“还能冒多大风险”。SRE 把错误预算翻译成一张发布日历:哪天可以发、哪天必须停,大家照表执行,争论让位给数据。

要想排好这张日历,得先估算按当前消耗速率还能支撑多少天。剩余可用天数可以这样估算:

全家人达成共识:“预算没花完,想买就买;超支了,谁都别想买。”这份默契让家庭既幸福又不破产。系统也一样:错误预算不是约束研发的枷锁,而是让研发与 SRE 在同一个账本下共同前进的契约。

t可用=B剩余(1−SLO)×24×60\displaystyle t_{可用} = \frac{B_{剩余}}{(1 - SLO) \times 24 \times 60}
用剩余错误预算(分钟)除以每天允许消耗的预算(分钟/天),就能估算出按当前速率还能支撑多少天发布活动。
  1. 剩余预算B_剩余 是当前剩余的错误预算额度,以分钟为单位。
    B剩余B_{剩余}
  2. 每日消耗上限分母是每天允许消耗的错误预算分钟数,即 1440 分钟乘以允许失败率。
    (1−SLO)×1440(1 - SLO) \times 1440
  3. 天数估算两者相除得到按当前速率还能支撑的天数,作为发布节奏的依据。
    t可用=B剩余(1−SLO)×1440\displaystyle t_{可用} = \frac{B_{剩余}}{(1 - SLO) \times 1440}

AI 应用场景

大促前的发布闸门

阶段:发布决策阶段

解决的问题:电商大促前,研发总想上新功能冲业绩,传统方式是“开会拍板 + 互相说服”,既低效又容易擦枪走火。错误预算提供了一个客观闸门:预算健康就放行,预算告急就冻结,一切看数字说话。

具体案例:某电商平台在 618 大促前两周发现支付链路错误率上升,错误预算只剩 12%。SRE 团队依据预算数据冻结了五个非紧急功能发布,只保留支付链路的紧急热修,最终大促期间系统平稳度过,预算刚好用尽但未超支。

金丝雀发布自动回滚保障支付

阶段:发布执行与监控阶段

解决的问题:支付网关升级时,一个隐藏 bug 就可能让全量用户无法付款。传统全量发布风险极高,而金丝雀发布配合自动回滚,能把影响面控制在 5% 流量内,并在指标异常时秒级切回。

具体案例:某支付网关新版本先接收 5% 流量试运行,监控发现新版本错误率比旧版本高出 1.8 倍,触发了自动回滚阈值,系统在 30 秒内切回旧版本,用户几乎无感知。团队随后定位到是超时参数配置错误,修复后重新进入金丝雀流程。

蓝绿发布升级银行核心系统

阶段:系统升级切换阶段

解决的问题:银行核心系统升级不允许长时间停机,也不允许升级失败后无法回退。蓝绿发布维护新旧两套环境,切换瞬间完成,旧环境保留作为退路。

具体案例:某银行在周末凌晨执行核心账务系统升级:新环境提前一周部署并全量验证,验证通过后通过 DNS 流量切换将用户请求导向新环境;发现两个非致命告警后,团队一键切回旧环境,周一早高峰业务完全不受影响。

Python 演示

python54 行
import random  class ErrorBudgetTracker:    """用家庭理财的思路跟踪错误预算,并决定是否放行发布。"""     def __init__(self, slo=0.999, days=30):        self.slo = slo        self.days = days        self.budget = (1 - slo) * days * 24 * 60  # 月度错误预算(分钟)        self.remaining = self.budget        self.release_approved = False     def consume(self, minute):        """记录一天的故障分钟数,从预算中扣除。"""        self.remaining -= minute        if self.remaining < 0:            self.remaining = 0     def can_release(self):        """预算剩余额度能撑过 5 天,才允许发版。"""        per_day = (1 - self.slo) * 24 * 60        return self.remaining / per_day > 5  def hit_rate(day):    """模拟一天的故障比例:平时小故障 + 发布日大故障。"""    base = 0.0004 + random.random() * 0.0007    if day in (7, 15, 22):        base += 0.003  # 发布日风险升高    return base  def main():    random.seed(2024)    tracker = ErrorBudgetTracker(slo=0.999, days=30)    for day in range(1, tracker.days + 1):        down = hit_rate(day) * 24 * 60  # 当天故障分钟数        tracker.consume(down)        print("第 %2d 天: 故障 %.2f 分钟, 剩余预算 %.2f 分钟"              % (day, down, tracker.remaining))        if day == 10 and not tracker.release_approved:            result = "放行新版本" if tracker.can_release() else "冻结新版本"            print(">>> 第 10 天发布决策: %s" % result)            tracker.release_approved = True    if tracker.remaining > 0:        print("月末预算剩余 %.2f 分钟: 达成 SLO, 下月额度正常发放。"              % tracker.remaining)    else:        print("月末预算耗尽: 进入发布冻结期, 下月自动恢复。")  if __name__ == "__main__":    main()
目的:模拟一个 30 天月里错误预算的消耗过程,并在第 10 天根据剩余预算决定是否放行新版本——把“家庭零花钱”模型完整落地成可运行的发布闸门。
  1. self.budget = (1 - slo) * days * 24 * 60把 0.1% 的允许失败率转换成整月可用的“故障分钟数”。
  2. tracker.consume(down)每天记录故障分钟并扣减预算,相当于家庭账本记了一笔支出。
  3. def can_release(self)发布闸门:预算还能支撑 5 天以上才放行,否则冻结。
  4. if day in (7, 15, 22): base += 0.003把发布日建模为风险高点,模拟“花钱如流水”的一天。
  5. if tracker.remaining > 0月末结算:还有余额就达成 SLO,耗尽则进入发布冻结期。

常见误区

误区把 SLO 定成 99.999% 甚至 100%,觉得目标越接近完美越专业,反正“高目标不会错”。

正解SLO 越高,错误预算越少,研发被冻结的概率越大,基础设施成本也指数级上升。SLO 应该定在“业务可接受的最低线”——就像家庭预算,一分钱不花确实最安全,但生活也没了乐趣。留出错误预算,就是给创新和快速迭代留出空间。

为何常见:直觉上认为“越稳越好”,却忽略了可靠性是有成本的,而 SLO 本质是商业决策而非技术指标。

误区看到预算归零就以为系统已经崩溃,立刻全员上线救火,甚至把“预算耗尽”当成本月最大的故障来复盘。

正解预算耗尽不是事故本身,而是设计好的信号:停止发布、专攻稳定性。它恰恰是流程在正常工作——就像一个月的娱乐开销花光了,只是这月不能浪了,不是破产。下个月额度重新发放,系统照常运转。

为何常见:把“预算”误解为“剩余资源”,而它真正的含义是“可承受的风险额度”,用完反而意味着风险管理起了作用。

误区都是“四个九”,听起来只差一点点,可用性目标随便选一个就行。

正解99.9% 允许每年约 8.76 小时宕机,99.99% 只允许约 52.6 分钟——差了整整十倍。折算到月度错误预算,一个 30 天月里分别是 43.2 分钟和 4.3 分钟。预算缩水十倍,发布节奏和运维策略都必须跟着改变。

为何常见:人脑对百分比数字缺乏量纲直觉,不换算成“每年/每月能宕机多久”就感受不到差距。

误区两个词天天混着用,写文档、面试时随意替换,觉得语义完全一样。

正解金丝雀偏重“小流量试错 + 快速回滚”,灰度偏重“按比例渐进放量”。金丝雀是灰度的常见实现之一,但两者侧重不同:金丝雀关心“敢不敢放”,灰度关心“怎么放完”。就像先买把椅子试用是金丝雀,而把家里家具从 20% 换到 100% 是灰度。

为何常见:两者都涉及“小范围、渐进式”,特征重叠让初学者很难分清彼此的语义边界。

误区把指标面板铺满整面墙、告警规则开到最大,觉得数据越多越安心、告警越勤越安全。

正解告警过多必然导致告警疲劳——真正出事时,反而没人注意那条关键的告警。可观测性应该围绕 SLI 设计“少而准”的信号,就像账本不需要记每一毛钱,但每一笔大额支出必须一目了然。

为何常见:“数据多 = 掌控强”的直觉忽略了人的注意力是有限资源,也混淆了“记录”与“洞察”的区别。

面试题

Q1. 错误预算(Error Budget)在数值上等于什么?

单选题 · easy

  • A.1 减去 SLO 目标值← 正确答案
  • B.1 加上 SLO 目标值
  • C.SLO 目标值除以二
  • D.SLO 目标值乘以二

答案:A。错误预算 = 1 − SLO,它表示系统可以容忍的失败比例。就像家庭零花钱是总收入中可自由支配的部分,SLO 越高、预算越少,发布自由度就越低。

Q2. SLO 为 99.9% 时,一个 30 天的月份允许的总停机时间约为多少?

单选题 · easy

  • A.约 43 分钟← 正确答案
  • B.约 8.7 小时
  • C.约 7 天时间
  • D.约 43 小时

答案:A。30 天共 43200 分钟,允许失败比例 0.1%,即 43200 × 0.001 = 43.2 分钟。这是错误预算最经典的换算,务必牢记“百分比 × 总分钟数”的量纲思维。

Q3. 蓝绿发布的核心做法是什么?

单选题 · mid

  • A.两套环境一键切换← 正确答案
  • B.逐节点滚动替换
  • C.小流量灰度试错
  • D.发布失败自动熔断

答案:A。蓝绿发布同时维护新旧两套环境,验证通过后通过流量切换瞬间完成升级,旧环境保留作为退路,像“搬新家留旧房”。逐节点替换是滚动发布,小流量试错是金丝雀。

Q4. 金丝雀发布的主要优势是什么?

单选题 · mid

  • A.风险隔离快速回滚← 正确答案
  • B.环境切换成本最低
  • C.完全不需要监控
  • D.一次全量立即替换

答案:A。金丝雀发布先用小比例流量(如 5%)试运行,问题早发现、秒级回滚,把爆炸半径压到最小。它恰恰最依赖监控,也不可能零成本,更不是全量替换。

Q5. 熔断机制的主要作用是什么?

单选题 · easy

  • A.保护下游服务可用← 正确答案
  • B.加快代码编译速度
  • C.扩大错误预算额度
  • D.减少系统日志数量

答案:A。当下游服务不堪重负时,熔断主动拒绝请求,防止故障级联扩散,保护整个链路。它不改变预算、不加速编译,与日志数量也无关。

Q6. 关于 SLI 与 SLO 的关系,下列说法正确的是?

单选题 · mid

  • A.SLI 是实际测量值← 正确答案
  • B.SLO 是实际测量值
  • C.SLI 是历史数据值
  • D.两者完全同一概念

答案:A。SLI 是系统实际服务水平的度量(如请求成功率),SLO 是设定的目标阈值。SLI 是“体温计读数”,SLO 是“健康标准”,两者是度量与目标的关系,绝不是同一概念。

Q7. 错误预算耗尽后,以下哪些是合理的处理措施?

多选题 · hard

  • A.冻结高风险发布← 正确答案
  • B.暂停非紧急变更← 正确答案
  • C.立即删除监控
  • D.全员通宵加班

答案:AB。预算耗尽意味着本月的风险额度已用完,正确做法是冻结高风险发布、暂停非紧急变更,转入稳定性修复。删除监控只会让你“看不见”风险,通宵加班则破坏可持续性。

Q8. 可观测性的“三大支柱”包括下列哪些?

多选题 · mid

  • A.指标监控数据← 正确答案
  • B.应用日志数据← 正确答案
  • C.链路追踪数据← 正确答案
  • D.容器编排技术

答案:ABC。三大支柱是指标(Metrics)、日志(Logs)、追踪(Traces),分别回答“多健康”“发生了什么”“卡在哪”。容器编排是部署技术,不属于可观测性支柱。

Q9. 下列哪些情况适合触发自动回滚?

多选题 · hard

  • A.新版本错误率翻倍← 正确答案
  • B.关键接口延迟飙升← 正确答案
  • C.单元测试数量增加
  • D.告警规则被删除

答案:AB。自动回滚由可观测性信号驱动,新版本错误率显著上升、延迟飙升都是明确的“翻车”信号。单元测试数量增加是好事,删除告警规则属于配置变更,都谈不上回滚。

Q10. SLO 为 99.9%,某 30 天月的前 20 天累计可用性为 99.94%(优于 SLO)。若后 10 天不允许再次超支,则每天最多还能容忍停机约多少分钟?

单选题 · extreme

  • A.约 2.6 分钟← 正确答案
  • B.约 4.3 分钟
  • C.约 26 分钟
  • D.约 43 分钟

答案:A。月度总额度 43.2 分钟;前 20 天停机 0.06% × 28800 = 17.28 分钟;剩余额度 43.2 − 17.28 = 25.92 分钟,折合后 10 天每天约 2.6 分钟。这道题的考点是把百分比换算成分钟,再用“总预算 − 已消耗”倒推每日可容忍量。