3. Error Budget 的消耗与燃烧速率

Error Budget 的消耗不是均匀的。在生产环境中,故障可能以不同的速度消耗预算。为了精确控制 SLO 的达成,SRE 引入了燃烧速率(Burn Rate)的概念。燃烧速率描述了 Error Budget 被消耗的速度,是触发告警和自动调度的核心指标。

3.1 燃烧速率(Burn Rate)的定义

燃烧速率衡量的是实际错误率与SLO 目标错误率的比值。它告诉我们,当前系统的错误率是 SLO 允许的错误率的多少倍。

公式:
Burn Rate = 实际错误率 / (1 - SLO 目标)

示例:

  • 假设 SLO 目标为 99.9%(即允许的错误率为 0.1%)。
  • 如果当前实际错误率为 1%,则 Burn Rate = 1% / 0.1% = 10。
  • 这意味着系统正在以 10 倍于允许速度消耗 Error Budget。

3.2 快速燃烧与慢速燃烧

根据燃烧速率的高低,可以将燃烧行为分为两类,它们对 SLO 的影响截然不同。

燃烧类型 Burn Rate 范围 典型场景 对 SLO 的影响
慢速燃烧 1 ~ 5 倍 偶发延迟、少量错误、部分节点异常 缓慢消耗预算,可能在较长窗口(如 30 天)内耗尽,通常不触发紧急告警,但需要关注趋势。
快速燃烧 5 ~ 20+ 倍 大面积宕机、关键服务中断、配置错误 在几分钟到几小时内迅速耗尽预算,直接威胁月度 SLO,必须立即响应。
关键洞察: 快速燃烧是 SLO 告警的主要触发源。SRE 通常使用多窗口(如 1 小时、5 分钟)的 Burn Rate 来设计告警,以平衡告警的及时性与准确性。

3.3 燃烧速率与 Error Budget 消耗的关系

下图展示了不同燃烧速率下,Error Budget 随时间消耗的曲线。快速燃烧(红色曲线)会在极短时间内将预算耗尽,而慢速燃烧(蓝色曲线)则是一个渐进的过程。

不同燃烧速率下的 Error Budget 消耗曲线 Error Budget 剩余 (%) 时间 0% 50% 100% 慢速燃烧 (Burn Rate = 2) 快速燃烧 (Burn Rate = 10) 说明:快速燃烧(红色)在短时间内急剧消耗预算,必须立即响应;慢速燃烧(蓝色)消耗平缓,可通过长期趋势分析发现。

3.4 燃烧速率在作业调度中的应用

在基于 Error Budget 的调度策略中,燃烧速率直接决定了作业的优先级调整幅度。

  • 低 Burn Rate(< 2): 系统健康,Error Budget 充足。所有作业(包括低优先级作业)可以正常调度,无需干预。
  • 中 Burn Rate(2 ~ 5): 预算消耗加速。调度器开始对低优先级作业进行限流或降级,优先保障核心服务的资源。
  • 高 Burn Rate(> 5): 预算面临快速耗尽风险。调度器将暂停或终止所有非关键作业,并将全部资源倾斜给保障 SLO 的核心服务。
实践注意: 燃烧速率阈值需要根据业务容忍度调整。对于金融交易系统,Burn Rate > 3 可能就需要立即熔断;而对于内部工具,Burn Rate > 10 才触发告警。阈值设定应结合历史故障复盘。

3.5 多窗口燃烧速率检测

为了避免误告警,SRE 通常使用多窗口策略来检测燃烧速率。例如,同时监控 1 小时和 5 分钟的 Burn Rate。

窗口长度 检测目的 典型阈值
1 小时 检测快速燃烧(突发故障) Burn Rate > 14.4(对应 99.9% SLO)
6 小时 检测中等燃烧(持续异常) Burn Rate > 6
30 天 检测慢速燃烧(长期趋势) Burn Rate > 1

通过多窗口组合,调度系统可以区分“瞬时抖动”和“持续恶化”,从而做出更精准的优先级调整决策。