2. 压测基础概念:并发用户数、吞吐量(QPS/TPS)、响应时间、错误率、P99/P95延迟

性能压测不是盲目施压,而是基于一组可量化的指标来评估系统行为。本章将逐一拆解压测领域的五个核心概念,并说明它们之间的因果关系与权衡。

2.1 并发用户数(Concurrent Users)

并发用户数指在同一时间窗口内,系统需要同时处理的活跃用户请求数量。注意,它不等于“注册用户数”或“日活用户数”,而是指在压测工具中同时维持的虚拟用户(VU)数量。

术语定义压测中的含义
并发用户数同一时刻向系统发送请求的用户数压测工具中同时运行的线程/协程数
在线用户数已登录但可能无操作的用户通常远大于并发用户数
注册用户数系统总用户量与压测负载无直接关系
实践要点:压测时通常从低并发(如 10 VU)开始,逐步递增,观察系统在并发增长下的行为拐点。

2.2 吞吐量:QPS 与 TPS

吞吐量是系统在单位时间内处理请求或事务的能力,是衡量系统处理效率的核心指标。

  • QPS(Queries Per Second):每秒查询数,常用于读密集型系统(如搜索引擎、API 网关)。
  • TPS(Transactions Per Second):每秒事务数,常用于写密集型或包含完整业务链路的系统(如订单创建、支付流程)。

一个事务可能包含多次查询,因此 TPS 通常 ≤ QPS。在压测报告中,两者常被统称为“吞吐量”。

指标适用场景典型值参考
QPS缓存查询、搜索接口、列表页单机 1000~10000+
TPS下单、支付、注册、数据写入单机 100~2000+

2.3 响应时间(Response Time / Latency)

响应时间是从客户端发出请求到收到完整响应所经过的总时长,通常以毫秒(ms)为单位。它直接反映用户体验。

响应时间可分解为:

  1. 网络延迟:数据在客户端与服务端之间传输的时间。
  2. 排队等待:请求在服务端队列中等待处理的时间。
  3. 服务处理:业务逻辑执行、数据库查询、外部调用等实际耗时。
  4. 响应传输:服务端将结果返回给客户端的时间。
关键认知:响应时间不是固定值,它会随并发用户数增加而上升。当系统资源耗尽时,响应时间会急剧恶化(拐点效应)。

2.4 错误率(Error Rate)

错误率指在压测过程中,返回非 2xx/3xx 状态码或业务自定义失败码的请求占比。计算公式:

错误率 = (错误请求数 / 总请求数) × 100%

常见的错误类型包括:

  • HTTP 5xx:服务端内部错误、超时、网关错误。
  • HTTP 4xx:限流、鉴权失败、参数错误(需结合业务判断)。
  • 连接超时/重置:网络层或连接池耗尽。
  • 业务错误码:如库存不足、余额不足等业务逻辑失败。
注意:压测中错误率应严格控制在 0.1% 以下(高可用系统要求 0.01% 以下)。错误率突然升高往往是系统过载或配置瓶颈的第一信号。

2.5 百分位延迟:P99 / P95

平均响应时间(Avg RT)容易被极端值掩盖,无法反映大多数用户的真实体验。百分位延迟(Percentile Latency)能更精确地描述延迟分布。

百分位含义解读
P50(中位数)50% 的请求在此时间内完成代表“典型”用户体验
P9595% 的请求在此时间内完成代表“大多数”用户体验,常用于 SLA
P9999% 的请求在此时间内完成代表“尾部延迟”,反映系统稳定性
P99999.9% 的请求在此时间内完成代表极端情况,用于高要求系统

例如:P99 = 500ms 意味着 99% 的用户在 500ms 内得到响应,只有 1% 的用户体验更差。

2.6 核心指标关系图

以下 SVG 图展示了五个核心指标之间的因果与制约关系:

压测核心指标关系图 并发用户数 吞吐量 (QPS/TPS) 响应时间 (Latency) 错误率 (Error Rate) P99 / P95 延迟 正相关(拐点后下降) 正相关(非线性增长) 响应时间过长 → 超时错误 尾部延迟 说明:并发用户数是压测的输入变量,直接影响吞吐量、响应时间、错误率和百分位延迟

2.7 指标间的权衡与典型曲线

在压测过程中,五个指标并非独立变化,而是遵循以下典型规律:

  • 轻负载区:并发增加 → 吞吐量线性上升,响应时间平稳,错误率接近 0。
  • 拐点区:资源接近饱和 → 吞吐量增速放缓,响应时间开始明显上升,P99 延迟率先恶化。
  • 过载区:并发继续增加 → 吞吐量下降,响应时间急剧飙升,错误率显著升高。
压测目标:找到系统的“最佳并发点”——在该并发下吞吐量最大、响应时间仍在可接受范围、错误率趋近于零。这个点通常对应 P95 延迟的拐点。

2.8 压测指标速查表

指标单位理想范围恶化信号
并发用户数VU根据系统容量设计超过拐点值
QPS / TPSreq/s 或 txn/s越高越好(线性增长区)增速放缓或下降
响应时间(平均)ms< 200ms(API) / < 500ms(页面)> 1000ms
错误率%< 0.1%> 1%
P99 延迟ms< 2× 平均响应时间> 5× 平均响应时间
推荐做法:在压测报告中同时展示平均响应时间、P95、P99 三条曲线,而不是只给一个平均值。这能帮助团队快速定位尾部延迟问题。