错误预算是什么
以 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 定义先行:从用户视角选指标(成功率、延迟分位),窗口与测量方式写清后再谈预算。预算不是精确额度而是决策工具,趋势比单点数字更重要。