3. 蓝绿发布中的关键 SLI 指标

在蓝绿发布场景下,SLO 违约检测的核心在于选取正确的 SLI(Service Level Indicator)指标。蓝绿环境切换瞬间流量特征会发生剧烈变化,错误的指标或阈值会导致误判或漏报。本章定义生产环境中必须监控的四大类 SLI 指标,并给出典型阈值参考。

3.1 请求延迟:P99 与 P95

延迟指标反映服务响应速度。蓝绿发布中,新版本(Green)首次承接流量时,JIT 编译、缓存预热、连接池初始化等行为可能导致尾部延迟飙升。P99(99% 请求在阈值内完成)和 P95(95% 请求在阈值内完成)是最敏感的 SLI。

指标 含义 蓝绿发布中的典型阈值 违约影响
P99 延迟 最慢 1% 请求的延迟上限 ≤ 500ms(API 类)
≤ 2000ms(批处理类)
用户体验严重受损,SLO 违约高风险
P95 延迟 最慢 5% 请求的延迟上限 ≤ 200ms(API 类)
≤ 800ms(批处理类)
多数用户感知变慢,需触发告警
实践建议:在蓝绿切换后的前 60 秒内,P99 延迟允许短暂升高至阈值的 1.5 倍(即 750ms),但超过 120 秒仍未回落则视为严重违约,应触发自动回滚。

3.2 错误率:5xx 与 4xx

错误率是衡量服务可用性的直接指标。蓝绿发布中,新版本代码缺陷、配置错误、依赖服务不兼容等问题会直接表现为 HTTP 错误码激增。

  • 5xx 错误(服务端错误):表示服务自身故障。蓝绿切换后,5xx 错误率应 ≤ 0.1%(千分之一)。超过 1% 必须立即回滚。
  • 4xx 错误(客户端错误):表示请求参数或鉴权问题。蓝绿发布中,4xx 错误率应 ≤ 1%。若新版本修改了 API 契约或鉴权逻辑,4xx 错误率可能飙升,需区分正常业务拒绝与异常拒绝。
注意:蓝绿发布期间,如果 5xx 错误率在 10 秒内连续超过 0.5%,且 P99 延迟同步升高,则构成“双重违约信号”,自动恢复系统应跳过观察期直接执行回滚。

3.3 吞吐量:QPS(每秒查询数)

吞吐量反映服务处理能力。蓝绿发布中,新版本可能因性能退化导致 QPS 下降,或因连接泄漏导致 QPS 先升后降。

场景 正常行为 异常行为 违约阈值
流量切换 QPS 平滑过渡,波动 ≤ 10% QPS 骤降 > 30% 触发告警
持续运行 QPS 稳定在基线 ±15% QPS 持续下降超过 2 分钟 触发回滚

3.4 资源利用率:CPU 与内存

资源利用率是基础设施层面的 SLI。蓝绿发布中,新版本可能存在内存泄漏、CPU 死循环或线程阻塞问题。

  • CPU 利用率:正常范围 40%–80%。超过 90% 持续 30 秒以上,说明服务过载或存在异常计算。
  • 内存利用率:正常范围 50%–85%。超过 90% 或持续增长(如 5 分钟内增长超过 20%),提示内存泄漏风险。
关键原则:资源利用率指标应与其他 SLI 联合分析。例如:CPU 升高 + QPS 下降 = 服务阻塞;CPU 升高 + QPS 升高 = 正常负载;内存升高 + 错误率升高 = 内存泄漏。
蓝绿发布 SLI 指标关联关系 蓝绿发布切换 P99 / P95 延迟 5xx / 4xx 错误率 QPS 吞吐量 CPU / 内存 联合分析 → SLO 违约判定 触发回滚 继续发布 单一指标异常 → 告警 多指标联合异常 → 自动回滚

3.5 SLI 指标汇总与阈值速查

以下表格汇总蓝绿发布中所有关键 SLI 的推荐阈值,供 SRE 团队在配置 SLO 违约检测时直接参考。

SLI 类别 具体指标 正常阈值 告警阈值 回滚阈值
请求延迟 P99 ≤ 500ms 500ms – 750ms > 750ms 持续 120s
P95 ≤ 200ms 200ms – 400ms > 400ms 持续 120s
错误率 5xx ≤ 0.1% 0.1% – 0.5% > 0.5% 持续 30s
4xx ≤ 1% 1% – 3% > 3% 持续 60s
吞吐量 QPS 基线 ±15% 下降 15% – 30% 下降 > 30% 持续 60s
资源利用率 CPU 40% – 80% 80% – 90% > 90% 持续 30s
内存 50% – 85% 85% – 90% > 90% 或 5min 增长 > 20%
基线校准:以上阈值为通用推荐值。生产环境中,建议基于过去 7 天或 30 天的历史数据动态计算基线,并设置 1.5σ 或 2σ 作为告警线,避免固定阈值在业务高峰期产生误报。