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 随时间消耗的曲线。快速燃烧(红色曲线)会在极短时间内将预算耗尽,而慢速燃烧(蓝色曲线)则是一个渐进的过程。
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 |
通过多窗口组合,调度系统可以区分“瞬时抖动”和“持续恶化”,从而做出更精准的优先级调整决策。