2. 压测基础:压测目标定义、关键性能指标(QPS、TPS、RT、P99/P999)
性能压测不是盲目地“打高并发”,而是一个目标驱动、指标量化、结果可复现的工程过程。本节将系统梳理压测的核心目标与关键性能指标,为后续连接池参数调优与尾延迟分析奠定度量基础。
2.1 压测目标定义:从“能跑多快”到“能稳多久”
一个规范的压测目标应包含以下四个维度:
| 维度 | 定义 | 典型问题 |
|---|---|---|
| 容量目标 | 系统在可接受延迟内能承载的最大并发用户数或吞吐量 | “1000 并发用户下,QPS 能否达到 5000?” |
| 稳定性目标 | 系统在长时间(如 1 小时)持续压力下是否出现性能退化或错误 | “持续压测 30 分钟,P99 延迟是否保持 < 200ms?” |
| 弹性目标 | 系统在突发流量或资源降级时的恢复能力 | “连接池从 50 收缩到 10 后,QPS 恢复时间是多少?” |
| 合规目标 | 压测过程不破坏生产数据、不触发安全告警、不违反审计要求 | “压测流量是否包含脱敏后的合规数据?” |
实践建议:每次压测前必须书面定义目标,并明确“通过/失败”判定标准。例如:“在 200 并发线程下,QPS ≥ 3000 且 P99 ≤ 150ms 且错误率 < 0.1% 视为通过。”
2.2 关键性能指标详解
后端压测中最核心的四个指标构成性能度量的“黄金四角”:QPS、TPS、RT、P99/P999。下面逐一拆解其定义、计算方式与典型阈值。
2.2.1 QPS(Queries Per Second)与 TPS(Transactions Per Second)
| 指标 | 全称 | 含义 | 典型场景 |
|---|---|---|---|
| QPS | Queries Per Second | 每秒查询次数,侧重读操作或单一请求 | 缓存查询、DNS 查询、简单 API 调用 |
| TPS | Transactions Per Second | 每秒事务数,一个事务可能包含多个请求 | 下单流程(登录→选品→支付→确认) |
关键区别:QPS 衡量的是“单次请求”的吞吐,TPS 衡量的是“完整业务操作”的吞吐。在连接池调优场景中,通常更关注 TPS,因为一个数据库事务可能对应多个连接池操作。
2.2.2 RT(Response Time)
响应时间指从客户端发出请求到收到完整响应所经过的时间,通常以毫秒(ms)为单位。RT 的分布比平均值更重要:
- 平均 RT:容易受极端值影响,不能反映真实体验。
- 中位数 RT(P50):半数请求的响应时间,代表“典型体验”。
- 尾延迟(P99 / P999):最慢 1% 或 0.1% 请求的响应时间,代表“最差体验”。
2.2.3 P99 / P999:尾延迟的度量标尺
尾延迟是连接池参数调优中最敏感的指标。一个连接池参数(如 maxActive、maxWait)的微小变化,可能让 P99 从 50ms 飙升到 500ms,而平均 RT 仅从 30ms 升到 45ms——这就是“平均延迟掩盖问题”的典型陷阱。
| 百分位 | 含义 | 典型阈值(互联网场景) | 调优关注度 |
|---|---|---|---|
| P50 | 半数请求的响应时间 | < 50ms | 低 |
| P90 | 90% 请求的响应时间 | < 100ms | 中 |
| P99 | 99% 请求的响应时间 | < 200ms | 高 |
| P999 | 99.9% 请求的响应时间 | < 500ms | 极高 |
避坑提示:不要只看平均 RT!在连接池调优中,P99 和 P999 才是“连接等待超时”、“连接泄漏”、“线程阻塞”等问题的放大镜。一个连接池参数如果让 P99 恶化 2 倍,即使平均 RT 不变,也必须回退。
2.3 指标关系与压测流程
下图展示了压测过程中各指标之间的动态关系,以及从目标定义到结果分析的完整链路:
2.4 指标采集与计算示例
在实际压测中,指标通常由压测工具(如 JMeter、wrk、Locust)或 APM 系统采集。以下是一个典型的指标采集输出片段:
# 压测结果摘要(示例)
Total requests: 120,000
Concurrency: 200
QPS (avg): 3,850
TPS (avg): 1,280
Error rate: 0.08%
Response Time (ms):
Min: 12
P50: 38
P90: 72
P99: 185
P999: 420
Max: 890
解读:该压测中 P99 为 185ms,P999 为 420ms,说明最慢的 1% 请求延迟接近 200ms,而最慢的 0.1% 请求已超过 400ms。在连接池调优中,应优先分析这 0.1% 的请求是否因连接等待超时或线程阻塞导致。
2.5 指标选择矩阵:不同场景下的关注重点
| 压测场景 | 首要指标 | 次要指标 | 连接池相关风险 |
|---|---|---|---|
| 高并发读(缓存、查询) | QPS | P99 RT | 连接池耗尽导致查询排队 |
| 高并发写(订单、日志) | TPS | P999 RT、错误率 | 事务阻塞、连接泄漏 |
| 混合负载(读写 7:3) | TPS + P99 | QPS、错误率 | 读写连接池隔离不当 |
| 长连接保活(WebSocket) | 连接数 + P99 | 内存占用、GC 频率 | 连接池空闲连接回收策略 |
| 安全合规压测 | 错误率 + P999 | QPS、TPS | 连接池参数触发超时熔断 |
安全合规提醒:在压测过程中,必须同时监控错误率。如果错误率超过 1%,应立即停止压测并检查是否因连接池参数不当导致数据库连接泄露或认证失败。合规压测要求所有压测流量必须可追溯、可回放。