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 升高 = 正常负载;内存升高 + 错误率升高 = 内存泄漏。
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σ 作为告警线,避免固定阈值在业务高峰期产生误报。