首页/开发/CI/CD 与发布速查/错误预算(Error Budget)
质量门禁与回滚51 条

错误预算(Error Budget)

以 SLO 为基准计算的允许失败额度:1 减去 SLO 即为预算比例;例如 99.9% 可用性在 30 天里约允许 43 分钟不可用。

CI/CD 与发布速查开发更新于 2026-10-13

错误预算是什么

以 SLO 为基准计算的允许失败额度:错误预算 = 1 - SLO 目标。99.9% 的可用性承诺对应 0.1% 的失败预算,30 天窗口约 43 分钟;99.95% 约 21 分钟;99% 约 7 小时。它给发布速度与可靠性提供一把共同尺子:预算充足时放开节奏、多做实验;消耗殆尽时冻结高风险发布、优先还债。预算必须有消费方——没人因超支改变行为,指标就只是数字。

基本信息

计算错误预算 = 1 - SLO 目标,如 99.9% 对应 0.1%
月度换算(30 天)99.9% 约 43m12s;99.95% 约 21m36s;99% 约 7h12m
消耗来源事故、劣化、非计划维护
用途平衡发布节奏与可靠性投入
策略预算耗尽触发发布冻结,恢复后解锁

预算与决策

预算状态建议动作
消耗低于一半正常发布节奏,可主动做可靠性实验
消耗过半收紧高风险变更,加强变更观察
接近耗尽冻结非必要发布,集中修复稳定性问题
周期结束按滚动窗口刷新,上一周期不累计

典型使用场景

  • 发布决策:用剩余预算作为放行依据,替代拍脑袋判断
  • 冻结机制:超支自动触发高风险发布冻结,恢复后再解开
  • 优先级对话:稳定性投入与功能迭代有了共同数据基础
  • 复盘输入:预算消耗曲线定位劣化时段,补充监控与测试
  • 多服务管理:按服务分别设 SLO,预算独立核算避免相互稀释
  • 季度评审:回顾预算消耗与投入结构的匹配度,决定可靠性工程的优先级

月不可用预算换算

月不可用预算换算
# 30 天 = 43200 分钟
python3 -c "print(30*24*60*0.001, 'minutes')"
# 99.9%  -> 43.2 分钟
# 99.95% -> 21.6 分钟
# 99%    -> 432 分钟
预算按滚动窗口刷新:上一周期的超支不跨期累计(也可自定义窗口)。
SLO 定义先行:从用户视角选指标(成功率、延迟分位),窗口与测量方式写清后再谈预算。预算不是精确额度而是决策工具,趋势比单点数字更重要。

易错点

  • SLO 未按用户视角定义:预算数字与真实体验脱节
  • 预算无人认领:消耗殆尽后没有团队改变发布策略
  • 窗口选择随意:按季度与按 30 天滚动,同一目标的预算相差数倍,先定窗口再公示
  • 把预算当考核指标:团队倾向少报事故、数字失真,预算应服务决策而非考核
  • 只冻不恢复:超支后发布冻结常态化,团队用绕过流程推进;冻结要配套明确的恢复条件

数据来源与参考

  • Google SRE Workbook《Implementing SLOs》(含错误预算策略)
  • Google SRE Book 第 3 章 Embracing Risk
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌