3. 延迟的度量与指标:延迟的四个黄金信号、P50/P95/P99 延迟、SLI/SLO/SLA 定义

在 API 网关的性能诊断中,度量(Metrics)是定位延迟问题的基石。没有精确的度量,任何调优都是盲目的。本章将深入剖析延迟诊断的四个黄金信号、百分位延迟的计算逻辑,以及 SLI/SLO/SLA 在网关场景下的定义与落地方式。

3.1 延迟的四个黄金信号

Google SRE 经典著作中提出的“四个黄金信号”——延迟(Latency)、流量(Traffic)、错误(Errors)、饱和度(Saturation),是 API 网关健康度评估的核心框架。这四个信号相互关联,共同构成延迟根因分析的起点。

黄金信号 网关场景定义 典型指标 延迟关联性
延迟 请求从进入网关到返回响应的总耗时 P50/P95/P99 延迟、平均延迟 核心度量,直接反映用户体验
流量 网关处理的请求速率与并发数 RPS(每秒请求数)、活跃连接数 流量突增可能导致延迟飙升
错误 网关返回的 HTTP 错误或超时比例 5xx 率、4xx 率、超时率 高错误率常伴随高延迟(如重试风暴)
饱和度 网关资源(CPU、内存、连接池)的使用程度 CPU 使用率、连接池占用率、队列深度 饱和度接近 100% 时延迟急剧恶化
实践要点: 在网关监控面板中,建议将四个黄金信号放在同一时间轴视图。当 P99 延迟出现异常时,优先检查饱和度(CPU/连接池)和错误率,排除资源瓶颈或上游故障,再分析流量模式变化。

3.2 P50 / P95 / P99 延迟:百分位度量的价值

平均延迟(Average Latency)容易被极端值掩盖。例如,99% 的请求在 10ms 内完成,但 1% 的请求耗时 5s,平均延迟仍可能显示为 60ms,完全掩盖了长尾问题。因此,网关延迟诊断必须使用百分位延迟。

  • P50(中位数延迟):50% 的请求在此值以下完成。反映大多数用户的典型体验。
  • P95(第 95 百分位延迟):95% 的请求在此值以下完成。代表常见的最差体验,是 SLA 的常用基准。
  • P99(第 99 百分位延迟):99% 的请求在此值以下完成。代表长尾延迟,通常由 GC 暂停、连接池争用、慢查询等偶发因素导致。
调优优先级: 优先优化 P99 延迟,因为长尾请求往往是系统瓶颈的早期信号。P99 从 200ms 降到 50ms,对用户体验的提升远大于 P50 从 10ms 降到 5ms。
百分位延迟分布示意图(P50 / P95 / P99) 请求耗时(ms)→ 请求累积百分比(%)→ P50 ~45ms P95 ~180ms P99 ~350ms 长尾区域 P99 之后的请求 延迟急剧上升

3.3 SLI / SLO / SLA:从指标到契约

延迟度量最终需要转化为可管理的服务等级目标。SLI、SLO、SLA 是三个不同层次的概念,在网关性能管理中必须清晰区分。

术语 全称 网关场景示例 核心作用
SLI Service Level Indicator
(服务等级指标)
网关 P99 延迟、错误率、吞吐量 可量化的原始度量数据
SLO Service Level Objective
(服务等级目标)
P99 延迟 ≤ 200ms,每月 99.9% 的时间达标 内部承诺的目标阈值
SLA Service Level Agreement
(服务等级协议)
P99 延迟 ≤ 500ms,每月 99.5% 达标,否则赔偿 对外契约,通常比 SLO 宽松
常见误区: 不要将 SLA 直接用作内部调优目标。SLA 是商业底线,SLO 才是工程红线。建议将网关 SLO 设置为 SLA 的 1.5~2 倍严格度(例如 SLA 要求 500ms,SLO 设为 200ms),为故障留出缓冲空间。

3.4 网关延迟 SLI 的采集与计算

在 API 网关中,延迟 SLI 通常通过以下方式采集:

  1. 请求入站时间戳:网关 Worker 接收请求的瞬间(T1)。
  2. 请求出站时间戳:网关将请求转发给上游服务的时间(T2)。
  3. 响应入站时间戳:网关收到上游响应的瞬间(T3)。
  4. 响应出站时间戳:网关将响应返回客户端的瞬间(T4)。

由此可分解出三个关键延迟子项:

  • 网关处理延迟 = (T2 - T1) + (T4 - T3) —— 网关自身路由、认证、限流等逻辑耗时。
  • 上游服务延迟 = T3 - T2 —— 上游业务处理耗时。
  • 总延迟 = T4 - T1 —— 端到端用户体验延迟。
// 伪代码:网关延迟 SLI 采集示例
long t1 = System.nanoTime();          // 请求入站
// ... 路由、认证、限流逻辑 ...
long t2 = System.nanoTime();          // 转发上游
// 上游处理 ...
long t3 = System.nanoTime();          // 收到上游响应
// ... 响应处理、日志记录 ...
long t4 = System.nanoTime();          // 响应出站

long totalLatencyNs = t4 - t1;
long upstreamLatencyNs = t3 - t2;
long gatewayLatencyNs = totalLatencyNs - upstreamLatencyNs;

// 上报到 Prometheus Histogram
latencyHistogram.observe(totalLatencyNs / 1_000_000.0);  // 转为 ms

3.5 延迟黄金信号联动分析

四个黄金信号并非孤立存在。下图展示了在网关延迟异常时,如何通过信号联动定位根因:

延迟黄金信号联动诊断流程 P99 延迟飙升 饱和度高? 扩容 / 限流 错误率上升? 检查上游 / 重试策略 分析流量模式变化
诊断口诀: 延迟高,先看饱和度;饱和度正常,再看错误率;错误率正常,最后分析流量特征。按此顺序可快速排除 80% 的常见延迟根因。

3.6 本章小结

  • 四个黄金信号(延迟、流量、错误、饱和度)是网关延迟诊断的四大支柱,缺一不可。
  • P50/P95/P99 百分位延迟比平均值更能反映真实用户体验,P99 是长尾问题的核心指标。
  • SLI/SLO/SLA 构成从度量到契约的完整链路:SLI 是原始数据,SLO 是内部目标,SLA 是外部承诺。
  • 延迟 SLI 应分解为网关处理延迟和上游服务延迟,便于精准定位瓶颈。