4、流量指标详解:请求速率(RPS/QPS)、并发连接数、流量突增的识别与应对策略

流量(Traffic)是衡量服务系统负载与健康状态最直接的黄金信号。在可观测性体系中,流量指标不仅反映用户行为与业务规模,更是容量规划、弹性伸缩、限流降级等运维动作的核心依据。本章将深入解析请求速率(RPS/QPS)、并发连接数两大核心流量指标,并系统阐述流量突增的识别方法与应对策略。

4.1 请求速率(RPS/QPS)

请求速率是单位时间内系统接收并处理的请求数量。根据协议与业务场景的不同,通常使用 RPS(Requests Per Second,每秒请求数) 或 QPS(Queries Per Second,每秒查询数) 来度量。在 RESTful API 或 Web 服务中,RPS 与 QPS 常被混用,但在数据库或搜索引擎场景下,QPS 特指查询类操作。

4.1.1 指标定义与采集

指标名称 定义 典型采集方式 常见工具
RPS 每秒进入系统的完整请求数(含成功、失败、超时) 负载均衡器连接数 / 应用层计数器 NGINX status、HAProxy stats、Prometheus Rate
QPS 每秒数据库或搜索引擎执行的查询次数 数据库内置监控(SHOW STATUS)、中间件指标 MySQL Questions、Elasticsearch search.query_total
成功请求速率 每秒返回 2xx/3xx 状态码的请求数 应用日志聚合 / 服务网格指标 Istio istio_requests_total、Spring Boot Actuator
错误请求速率 每秒返回 5xx/4xx 状态码的请求数 同上,按状态码过滤 PromQL rate(http_requests_total{status=~"5.."}[1m])
实践要点: 采集 RPS 时务必区分 入口流量(Ingress)与 出口流量(Egress)。入口流量反映用户真实负载,出口流量可能包含内部服务间调用,两者在容量规划中的权重不同。

4.1.2 指标解读与异常模式

  • 平稳增长:符合业务预期,通常伴随资源利用率线性上升,属于正常模式。
  • 阶梯式突增:短时间内 RPS 从 1000 跃升至 5000,可能由营销活动、热点事件或爬虫攻击引发。
  • 周期性波动:每日/每周固定时段出现波峰,如早高峰、秒杀时段,需提前准备弹性资源。
  • 异常陡降:RPS 突然归零或骤降 80%,通常意味着上游服务不可用、DNS 解析失败或负载均衡器故障。
  • 高 RPS 低成功率:请求速率很高但 5xx 比例同步上升,表明系统已过载,正在主动拒绝或处理失败。

4.2 并发连接数

并发连接数指在某一时刻,系统同时维持的活跃连接数量。与 RPS 不同,并发连接数反映的是系统当前的 存量 负载,而非 流量 速率。高并发连接数并不一定意味着高 RPS,例如长轮询(Long Polling)或 WebSocket 场景下,连接数可能很高但请求速率较低。

4.2.1 关键指标维度

维度 说明 监控对象
活跃连接数 当前正在传输数据或等待响应的连接 NGINX Active connections、Tomcat threads.busy
空闲连接数 已建立但无数据传输的连接(连接池复用) 数据库连接池 idle、HTTP Keep-Alive 连接
等待队列长度 因线程池/连接池满而排队等待处理的请求数 Tomcat requestCount、线程池 queue.size
连接建立速率 每秒新建 TCP 连接数 NGINX Accepts、系统 netstat 统计

4.2.2 并发连接数与 RPS 的关系模型

并发连接数、RPS 与平均响应时间(Latency)之间存在经典的小林定律(Little's Law):

并发连接数 = RPS × 平均响应时间(秒)

该公式在稳态系统中成立。当响应时间上升时,即使 RPS 不变,并发连接数也会同步增长。因此,并发连接数的异常升高往往是响应时间劣化的先行指标。

案例: 某电商平台在促销期间观察到并发连接数从 2000 升至 8000,但 RPS 仅从 5000 升至 5200。根据 Little's Law 反推,平均响应时间从 0.4s 升至 1.54s,系统已接近瓶颈。提前扩容后,成功避免了雪崩。

4.3 流量突增的识别方法

流量突增(Traffic Spike)是生产环境中引发故障的首要诱因。识别突增不能仅依赖人工盯盘,必须建立基于阈值的自动化检测机制。

4.3.1 静态阈值告警

设定固定阈值,例如“RPS > 10000”触发告警。适用于业务流量相对稳定的场景,但容易在业务正常增长时产生误报。

4.3.2 动态基线检测

基于历史数据(过去 7 天或 28 天同一时段)计算动态基线,当实时指标偏离基线超过 3σ(标准差)或 200% 时触发告警。常用算法包括:

  • 移动平均法:计算过去 N 个时间窗口的均值,与当前值比较。
  • 指数加权移动平均(EWMA):对近期数据赋予更高权重,适应缓慢趋势变化。
  • 分位数基线:使用 P50/P95/P99 作为基线,适合长尾分布流量。

4.3.3 同比/环比对比

将当前流量与“昨日同时段”或“上周同日同时段”对比,识别异常突增。例如:

突增比例 = (当前 RPS - 昨日同时段 RPS) / 昨日同时段 RPS × 100%

当突增比例超过 50% 且持续超过 5 分钟时,触发中级告警。

4.3.4 多指标联合判断

单一指标突增可能是误报,结合多个黄金信号可提高准确率:

场景 RPS 并发连接数 错误率 响应时间 判断结论
正常流量高峰 ↑ ↑ → → 或微升 系统健康,无需干预
过载风险 ↑ ↑↑ ↑ ↑↑ 需立即扩容或限流
攻击流量 ↑↑ ↑↑↑ ↑↑(4xx/5xx) ↑ 或 ↓ 触发 WAF 或 IP 黑名单
上游故障 ↓ ↓ ↑↑ N/A 检查上游依赖与 DNS

4.4 流量突增的应对策略

应对策略需形成自动化闭环:检测 → 决策 → 执行 → 恢复。以下按执行时机排序:

4.4.1 事前预防

  • 容量规划:基于历史峰值与业务增长预测,预留 30%~50% 的冗余容量。
  • 弹性伸缩策略:配置 HPA(Horizontal Pod Autoscaler)或 ASG(Auto Scaling Group),设定基于 RPS 或并发连接数的伸缩规则。
  • 限流降级配置:在网关层(如 Kong、APISIX)或应用层预置限流规则,如令牌桶、漏桶算法。

4.4.2 事中应对

策略 适用场景 操作方式 风险
快速扩容 RPS 突增但错误率未显著上升 增加 Pod 副本数 / 添加后端服务器 扩容速度可能跟不上流量增速
限流 系统已过载,错误率上升 网关层按 IP/用户/API 路径限流 可能影响正常用户
降级 非核心功能可牺牲 关闭推荐、评论等非关键服务 用户体验下降
流量调度 多区域/多集群部署 DNS 权重调整 / 全局负载均衡切换 跨区域延迟增加

4.4.3 事后复盘

  • 分析流量突增的根因:是业务活动、外部攻击还是上游重试风暴?
  • 更新动态基线:将本次突增模式纳入历史数据,优化告警阈值。
  • 压力测试:针对突增场景进行混沌工程或全链路压测,验证限流与扩容策略的有效性。
避坑指南: 限流策略切忌“一刀切”。建议按优先级将 API 分为核心、重要、普通三级,核心 API 限流阈值设为普通 API 的 3~5 倍。同时,限流后需返回明确的 HTTP 429 状态码与 Retry-After 头部,避免客户端盲目重试加剧雪崩。

4.5 流量指标监控架构

下图展示了一个生产级流量指标监控与应对的架构设计,涵盖从数据采集到自动化执行的完整链路。

流量指标监控与应对架构图 流量指标监控与应对架构 用户流量入口 API 网关(限流 / 路由 / 日志) 应用服务(RPS / 并发 / 延迟) Prometheus / Elasticsearch / 日志采集 告警引擎(静态阈值 / 动态基线 / 多指标联合) 自动伸缩 / 限流降级 通知 / 工单 / 人工介入 说明:流量从入口经网关进入应用服务,指标数据被采集后送入告警引擎,触发自动伸缩或限流降级策略,同时通知运维人员。

4.6 流量突增识别与应对流程

以下流程图展示了从指标异常检测到策略执行的标准操作流程,帮助团队建立可重复的响应机制。

流量突增识别与应对流程图 流量突增识别与应对流程图 开始监控 采集 RPS / 并发连接数 是否超过基线? (动态基线 / 静态阈值) 否(继续监控) 多指标联合判断(错误率 / 延迟) 选择应对策略 (扩容 / 限流 / 降级) 执行自动化策略 恢复 / 复盘

4.7 关键总结

  • RPS/QPS 是流量速率的直接度量,需区分入口与出口流量,并结合成功率解读。
  • 并发连接数 反映系统存量负载,与 RPS 和响应时间满足 Little's Law,是过载的先行指标。
  • 流量突增识别 应综合使用静态阈值、动态基线、同比环比与多指标联合判断,降低误报率。
  • 应对策略 需形成事前预防、事中应对、事后复盘的闭环,优先自动化扩容与限流,避免人工决策延迟。
  • 监控架构 应覆盖从流量入口到告警执行的全链路,确保指标采集、存储、告警、执行各环节低延迟且高可用。