详细解释
错误预算(Error Budget,简称 EB)是 SRE(站点可靠性工程)方法论中的核心工具,用于量化解决「业务要快(频繁发布)」和「工程要稳(不要宕机)」两大团队的永恒冲突。其数学定义极其简单:错误预算 = 1 − SLO,即「如果你的服务等级目标 SLO 是月度可用性 99.9%,那么一个月(720 小时)内,你允许自己失败或不可用的最大时间配额就是 720 × (1 − 99.9%) = 0.72 小时 = 43.2 分钟」——超过这个数字,本月 SLO 就失败了,客户可按 SLA 条款申请赔付。
错误预算的核心价值不在「算数字」,而在于「它是全公司统一的决策货币」:① 有错误预算结余时,研发团队可以放心发布新功能、做灰度、做架构重构、上线新模型版本;② 错误预算消耗到 60% 至 80% 时,触发「黄灯期」,发布必须经过额外稳定性评审;③ 错误预算耗尽时,触发「红灯期」,冻结所有非紧急发布,全团队转入稳定性修复模式,直到错误预算在下一周期重新恢复。这样做的好处是:产品和研发不用再和 SRE 反复拍脑袋争吵「能不能上线」,一切由预算数字说了算。
对大模型 API 场景而言,错误预算的定义通常不止于「可用性」,而是同时绑定「可用性 + P95 延迟 + P99 延迟 + 幻觉率/拒答率」四项指标合成综合错误预算,任何一项穿底都会消耗对应权重的预算。唯元智创 的企业级客户控制台每月会展示 4 项独立错误预算与综合错误预算的实时消耗曲线,并在剩余 30%/10%/耗尽三档自动触发工单与邮件告警。若某模型版本的错误预算在月中就已经耗尽,平台会自动降权,不再推荐路由分发该版本给新客户,直到错误预算由下一周期重置或版本修复。
错误预算四大核心指标与 SLO 建议阈值表(LLM API 场景)
| 指标名称 | SLO 目标(月度,企业级推荐) | 对应错误预算(月度,30 天=720h) | 消耗触发黄灯 | 消耗触发红灯(冻结发布) | 指标归属 |
|---|---|---|---|---|---|
| 可用性 Availability(成功返回率,不含 4xx) | 99.9% | 43.2 分钟失败时间 | 预算剩 40%(失败 25.9 分钟) | 预算剩 0(失败 43.2 分钟) | 稳定性 |
| P95 首字延迟 TTFT | ≤ 2 秒,命中率 ≥ 99% | 7.2 小时内可以有 P95 超阈值 | 命中率低于 99.5% | 命中率低于 99% | 体验 |
| P99 总端到端延迟 | ≤ 8 秒,命中率 ≥ 99% | 7.2 小时内可以有 P99 超阈值 | 命中率低于 99.5% | 命中率低于 99% | 体验 |
| 关键业务指标(例:代码一次通过 / 拒答率合规) | 代码通过率 ≥ 85% / 合规拒答率 ≥ 98% | 对应指标的不达标占比配额 | 通过率 ≤ 87% / 合规率 ≤ 98.5% | 通过率 ≤ 85% / 合规率 ≤ 98% | 质量/合规 |
| 综合加权错误预算(以上四项加权) | 四项加权后月度综合分 ≥ 99.5% | 3.6 小时综合失败配额 | 剩余 ≤ 50% 综合预算 | 剩余 = 0% 综合预算 | 全局决策 |
实战经验与避坑
- 错误预算的统计窗口不能选 1 天,必须按「28 天滚动窗口 + 自然月固定窗口」双轨并行:1 天窗口波动太大,周一挂了 30 分钟当天预算直接耗尽,第二天预算重置后大家又乱发,完全失去管控力;28 天滚动窗口(4 周)可以平滑掉偶发事故的长期影响,自然月窗口用于对客户 SLA 做结算和赔付,两者同时跑,决策时看哪个更严就按哪个来——SRE 界叫「双计时制」,能避免 90% 的边界争议。
- 错误预算必须按「客户等级 + 地域 + 模型规格」分别计算,绝不能拿全量均值糊弄:举反例——你有 100 个免费客户 + 1 个百万年度付费大客户,免费客户的请求占 95% 且经常失败,大客户请求只占 5% 但一次失败赔 10 万。如果只算全量均值,可用性可能高达 99.9%,但大客户那一侧其实失败了 3 次,SLA 照样穿底并赔钱。正确做法:① 白金/金牌客户单独算错误预算,权重是普通客户的 10 至 100 倍;② 核心地域(如国内华北/华东)和海外分开算;③ 每个模型规格(7B/70B/多模态)独立算预算。任何一个子维度穿红灯,全局进入稳定性优先模式。
- 黄灯期是最关键的管控环节,别等到预算耗尽才管:大量真实数据显示,当错误预算在月中(15 号)消耗超过 60%,有 80% 的概率该月会最终穿底耗尽;黄灯期(剩余 40% 至 50%)就应该执行以下动作——① 所有非紧急发布增加 1 位 SRE 审批;② 灰度比例从 10% 降到 1%,观察时间从 2 小时延长到 24 小时;③ 停止任何架构重构和模型大版本升级,只允许小步 Bugfix;④ 自动扩缩容的目标利用率下调 5%,热备副本加 5%。黄灯期管控得好,有 60% 至 70% 的概率能把月度预算重新拉回安全区。
- 错误预算耗尽后的「冻结期」必须有明确解封标准,而不是等月底自动重置:如果红灯期一到,大家就坐在那里摸鱼等下月初重置,错误预算就完全失去了改进意义;正确的解封标准至少三条满足其二:① 最近一次事故的 5 Whys 根因分析 + 修复方案已经 Code Review 通过并上线;② 最近连续 7 天滚动窗口可用性恢复到 SLO + 0.1%(目标 99.9% → 恢复到 99.99% 以上);③ 针对事故的自动化回归/压测用例写进 CI/CD,且通过压测。解封后一周内仍维持「小步灰度 + SRE 二次审批」,避免二次翻车。
- 故意「把错误预算省到 100%」也是失败,因为说明你发布太慢了:很多团队看到错误预算剩下 90%,就宣布「我们本月很稳,很好」,这其实是「过度保障」,意味着你牺牲了产品迭代速度去换稳定性。错误预算的哲学是「预算花掉 70% 至 90%,月底刚好剩 10% 至 30%」才是最优——说明你在本月 SLA 不违约的前提下,发布了最多的功能,做了最大胆的创新。如果连续两个月剩余预算都超过 50%,SRE 应该主动发起「目标利用率是否过高」的复盘,并建议适当调高灰度比例或增加新模型版本的发布频次。
- LLM 专属的「质量类错误预算」(如幻觉率/合规率)消耗速度要和「可用性类错误预算」加权合并:大模型 API 场景里,「服务返回 200 但内容胡说八道」和「服务返回 500」对用户的伤害可能前者更大;所以错误预算必须加权合成——例如可用性占比 40%、P95/P99 延迟占比 30%、合规拒答率占比 15%、事实一致性/幻觉率占比 15%——任何一项消耗过快都会拖累全局预算,这样 AI 合规与隐私 的质量指标和传统基础设施的稳定性指标才能放在同一个决策平面上。