压测基础概念:QPS、TPS、并发数、响应时间、吞吐量、资源利用率
在进行容量压测之前,必须准确理解几个核心度量指标。这些指标共同构成了压测的“语言”,用于描述系统在不同负载下的行为与瓶颈。以下逐一拆解其定义、计算方式与相互关系。
2.1 核心指标定义与对比
| 指标 | 英文全称 | 定义 | 典型单位 |
|---|---|---|---|
| QPS | Queries Per Second | 服务器每秒处理的查询请求数量,常用于读密集型系统(如搜索引擎、数据库查询)。 | 次/秒 |
| TPS | Transactions Per Second | 服务器每秒完成的事务数量,一个事务可能包含多个子请求(如下单=查询库存+扣减余额+生成订单)。 | 笔/秒 |
| 并发数 | Concurrency | 同一时刻系统正在处理的请求/事务数量(活跃连接数),不等于在线用户数。 | 个 |
| 响应时间 | Response Time / Latency | 从客户端发出请求到收到完整响应所经过的时间,通常关注平均值、TP99、TP999。 | 毫秒 (ms) |
| 吞吐量 | Throughput | 单位时间内系统成功处理的工作量,可以是 QPS、TPS 或网络带宽(如 Mbps)。 | 请求/秒 或 MB/s |
| 资源利用率 | Resource Utilization | 系统资源(CPU、内存、磁盘 I/O、网络)被占用的百分比,反映系统负载程度。 | 百分比 (%) |
区分要点: QPS 偏重“查询”,TPS 偏重“事务”。在压测平台中,如果被测接口是纯查询,QPS ≈ TPS;如果是复杂业务链路(如支付、下单),必须使用 TPS 来衡量系统真实处理能力。
2.2 指标关系:Little's Law 与压测模型
压测中最经典的定量关系由 Little's Law 描述:
并发数 = QPS(或 TPS) × 平均响应时间(秒)
这个公式揭示了三个核心变量之间的动态平衡:
- 固定响应时间下:并发数越高,吞吐量(QPS/TPS)越高。
- 固定并发数下:响应时间越长,吞吐量越低。
- 系统瓶颈点:当并发数超过系统承载上限时,响应时间会急剧上升,吞吐量反而下降(拐点)。
压测实战口诀: 先定并发数 → 观察响应时间 → 计算吞吐量 → 对比资源利用率。四个指标联动分析,才能定位瓶颈。
2.3 资源利用率:压测的“仪表盘”
资源利用率是判断系统是否达到容量上限的直接依据。压测过程中需要同时监控以下四个维度:
- CPU 利用率:过高(>85%)通常意味着计算瓶颈或线程争抢;过低(<20%)可能表示锁等待或 I/O 阻塞。
- 内存利用率:关注已用堆内存、GC 频率与 Full GC 次数,内存泄漏会导致吞吐量断崖式下跌。
- 磁盘 I/O:磁盘读写队列长度与等待时间,数据库或日志密集型系统容易在此处形成瓶颈。
- 网络带宽:网卡入/出流量是否接近上限,尤其在大文件传输或高并发 RPC 场景下。
常见误区: 不要只看 CPU 利用率。很多压测场景中,CPU 只有 40% 但 TPS 已经上不去,此时瓶颈可能在数据库连接池、线程池锁或网络 I/O。必须结合“资源利用率 + 响应时间 + 吞吐量”三维度交叉验证。
2.4 压测指标速查表
| 场景 | 重点关注指标 | 典型瓶颈表现 |
|---|---|---|
| 静态页面 / CDN | QPS、网络带宽 | 带宽打满,响应时间正常 |
| 数据库查询 | QPS、磁盘 I/O、CPU | 磁盘队列长,CPU 等待 I/O |
| 交易 / 支付链路 | TPS、响应时间 TP99 | 响应时间陡增,TPS 无法提升 |
| 消息队列消费 | TPS、内存利用率 | 内存持续增长,GC 频繁 |
| 微服务网关 | 并发数、CPU、网络连接数 | 连接数超限,CPU 上下文切换高 |
2.5 压测指标选择原则
- 业务对齐:核心交易链路用 TPS,列表查询用 QPS,文件上传用吞吐量(MB/s)。
- 关注尾部延迟:平均值容易掩盖问题,必须关注 TP99(99% 请求的响应时间)和 TP999。
- 并发数阶梯递增:从低并发开始,逐步增加,观察各指标的变化曲线,找到“拐点”。
- 资源利用率阈值:CPU 建议不超过 80%,内存不超过 85%(留出 buffer 应对突发流量)。