2. 性能基准建立:定义并发瓶颈的关键指标

在微服务并发瓶颈调优中,没有基准就没有优化。性能基准是一组可量化的测量值,用于描述系统在特定负载下的行为。本章定义四个核心指标:QPS、TPS、RT 和 P99 延迟,并说明如何通过它们识别并发瓶颈。

2.1 核心指标定义与对比

指标 全称 定义 典型单位 并发瓶颈关联
QPS Queries Per Second 每秒查询数,侧重读请求 req/s 缓存穿透、连接池耗尽
TPS Transactions Per Second 每秒事务数,侧重写/完整业务 tps 数据库锁竞争、分布式事务
RT Response Time 请求从发出到收到响应的总耗时 ms 线程阻塞、I/O 等待
P99 延迟 99th Percentile Latency 最慢 1% 请求的延迟上限 ms 长尾请求、资源争抢
关键认知:QPS 和 TPS 衡量吞吐量,RT 和 P99 衡量响应质量。并发瓶颈通常表现为:吞吐量上不去(QPS/TPS 到达拐点)或 延迟急剧恶化(RT/P99 飙升)。

2.2 指标关系与并发瓶颈模型

四个指标并非孤立存在。在微服务架构中,它们通过 Little's Law 关联:

L = λ × W

L = 系统中并发请求数(并发度)
λ = 到达率(QPS / TPS)
W = 平均响应时间(RT)

当并发度 L 超过系统最大处理能力时,RT 会非线性增长,P99 延迟率先恶化。下图展示了这一关系:

并发瓶颈下的指标关系模型 正常区 QPS/TPS 线性增长 RT 稳定(低抖动) P99 ≈ 1.5× 平均 RT 拐点区 QPS/TPS 增速放缓 RT 开始上升 P99 抖动加剧 瓶颈区 QPS/TPS 下降或震荡 RT 急剧飙升 P99 远超平均 RT 💡 并发度增加 → 系统从正常区进入拐点区 → 最终到达瓶颈区 P99 延迟是瓶颈区最敏感的预警指标 并发度 vs 指标变化趋势 并发度(L) 指标值 QPS/TPS RT P99 拐点

2.3 指标采集与基准建立步骤

  1. 确定压测场景:选择核心微服务接口(如订单创建、商品查询),定义典型请求参数。
  2. 设置负载梯度:从低并发(如 10 并发)开始,逐步增加至系统饱和(如 500 并发)。
  3. 采集原始数据:使用工具(如 JMeter、k6、wrk)记录每个并发梯度下的 QPS、TPS、RT 分布。
  4. 计算 P99 延迟:对 RT 样本排序,取第 99% 分位的值。
  5. 绘制性能曲线:以并发度为 X 轴,QPS/TPS 和 RT/P99 为双 Y 轴,识别拐点。
  6. 记录基准快照:保存拐点处的并发度、QPS、TPS、RT 均值、P99 延迟,作为后续调优的对比基线。
实践建议:每次压测至少运行 3 分钟,前 1 分钟为预热期(JIT 编译、连接池初始化),后 2 分钟数据才计入统计。P99 延迟需要至少 1000 个样本点才具有统计意义。

2.4 并发瓶颈的指标阈值参考

指标 健康阈值 警告阈值 瓶颈阈值
QPS 拐点 线性增长 增速 < 50% 下降或震荡
TPS 拐点 线性增长 增速 < 30% 下降或震荡
RT 均值 < 100 ms 100–500 ms > 500 ms
P99 延迟 < 200 ms 200–1000 ms > 1000 ms
P99 / RT 均值比 < 2x 2x–5x > 5x
常见误区:仅关注平均 RT 而忽略 P99 延迟。平均 RT 可能被大量快速请求拉低,掩盖了 1% 的慢请求——这些慢请求往往是并发瓶颈的早期信号。在微服务调用链中,一个慢服务可能拖垮整个链路。

2.5 基准报告模板(示例)

# 性能基准报告 - 订单创建服务 (order-svc)

## 测试环境
- 实例数: 4 Pods (2C4G)
- 数据库: MySQL 8.0, 连接池 20
- 缓存: Redis 6.x, 单节点

## 压测结果
| 并发数 | QPS (req/s) | TPS (tps) | RT 均值 (ms) | P99 (ms) | 状态   |
|--------|-------------|-----------|--------------|----------|--------|
| 10     | 850         | 420       | 11.2         | 18       | 健康   |
| 50     | 4100        | 2050      | 12.1         | 22       | 健康   |
| 100    | 7800        | 3900      | 12.8         | 25       | 健康   |
| 200    | 12000       | 6000      | 16.5         | 45       | 健康   |
| 300    | 13500       | 6750      | 22.1         | 120      | 警告   |
| 400    | 12800       | 6400      | 31.2         | 380      | 瓶颈   |
| 500    | 10500       | 5250      | 47.6         | 890      | 瓶颈   |

## 结论
- 拐点并发度: ~300
- 最大健康 QPS: ~13500
- 瓶颈原因: 数据库连接池耗尽 (活跃连接 20/20)