2. 压力测试基础:定义、目的与关键指标

压力测试(Stress Testing)是性能工程中最核心的验证手段之一。它通过向系统施加超出正常预期的负载,观察系统在极限状态下的行为表现,从而发现潜在的瓶颈、稳定性缺陷与容量边界。

2.1 压力测试的定义

压力测试是一种破坏性的性能测试方法。与负载测试(Load Testing)不同,压力测试的目标不是验证系统在预期流量下是否正常,而是回答一个关键问题:“系统在超过设计容量后,会如何失效?”

对比维度 负载测试 压力测试
目标 验证正常容量下的响应能力 发现极限状态下的失效模式
负载范围 50% ~ 120% 预期峰值 120% ~ 300% 预期峰值
关注点 响应时间、吞吐量 错误率、恢复能力、资源耗尽
典型场景 日常峰值流量模拟 秒杀、突发流量、雪崩测试

2.2 压力测试的核心目的

压力测试不是简单的“把系统打挂”,而是有明确的工程目标:

  1. 发现容量天花板:确定系统在可接受错误率下的最大吞吐量。
  2. 暴露隐藏瓶颈:CPU、内存、数据库连接池、线程池、IO 等在高压下的短板。
  3. 验证降级与熔断:检查限流、熔断、降级策略是否按预期生效。
  4. 评估恢复能力:压力释放后,系统能否自动恢复到正常状态。
  5. 建立性能基线:为后续的 A/B 分流、架构变更提供对比基准。
关键认知: 压力测试的价值不在于“测到多少 TPS”,而在于“系统在崩溃前给出了什么信号”。优秀的压力测试报告应该包含明确的失效边界和恢复时间。

2.3 四大关键指标详解

压力测试的量化分析依赖四个核心指标:TPS、QPS、RT、错误率。这四个指标必须联合解读,单一指标无法反映系统全貌。

2.3.1 TPS(Transactions Per Second)

TPS 表示系统每秒处理的事务数。一个事务通常包含一组完整的业务操作(例如:一次下单包含库存扣减、订单生成、支付请求)。

  • 适用场景:数据库事务、金融交易、订单处理等有状态业务。
  • 注意:TPS 高不一定代表系统好,必须结合事务的成功率。

2.3.2 QPS(Queries Per Second)

QPS 表示系统每秒处理的查询或请求数。在 Web 服务中,QPS 通常指 HTTP 请求的吞吐量。

  • 适用场景:API 网关、缓存查询、搜索引擎、静态资源服务。
  • 与 TPS 的关系:一个事务可能包含多个查询(QPS ≥ TPS)。
指标 典型计算方式 常见误区
TPS 成功事务数 / 测试时长(秒) 将重试请求计入 TPS
QPS 总请求数 / 测试时长(秒) 忽略非 2xx 响应

2.3.3 RT(Response Time)

RT 即响应时间,指从客户端发出请求到收到完整响应所经过的时间。压力测试中通常关注以下分位值:

  • P50(中位数):半数请求的响应时间,反映典型体验。
  • P95:95% 的请求在此时间内完成,代表大多数用户的体验。
  • P99:99% 的请求在此时间内完成,用于排查长尾延迟。
  • Max:最大响应时间,通常伴随错误或超时。
实践建议: 压力测试中,当 P99 RT 开始急剧上升时,通常意味着系统资源(如线程池、连接池)即将耗尽。这是比 TPS 下降更早的预警信号。

2.3.4 错误率(Error Rate)

错误率 = 错误请求数 / 总请求数 × 100%。错误类型包括:

  • HTTP 5xx:服务端内部错误。
  • 超时:请求在指定时间内未得到响应。
  • 连接拒绝:服务端连接池或线程池已满。
  • 业务错误:如库存不足、校验失败(需区分是否由压力引起)。

压力测试中,错误率 0% 通常意味着压力还不够大。合理的压力测试应该找到错误率从 0% 开始跳变的拐点。

2.4 指标关联与拐点分析

下图展示了压力测试中 TPS、RT、错误率随并发用户数变化的典型曲线:

压力测试指标拐点示意图 并发用户数 指标值 TPS RT 错误率 ▲ 拐点 正常区 过载区 • 拐点前:TPS 线性增长,RT 平稳 • 拐点后:TPS 下降,RT 急剧上升 • 错误率在拐点后开始显著增加
常见陷阱: 不要只看 TPS 峰值。很多团队在压力测试中只报告“最高 TPS 达到 5000”,却忽略了此时 RT 已从 50ms 飙升到 5s,错误率达到 15%。正确的做法是:在错误率 < 1%、RT P99 在可接受范围内的前提下,记录最大 TPS。

2.5 指标在 A/B 分流中的使用

在后续章节的 A/B 分流验证中,这四个指标将作为分流对比的量化依据:

  • 基线版本(A):记录压力测试下的 TPS、RT、错误率基线。
  • 实验版本(B):在相同压力模型下,记录对应指标。
  • 对比规则:若 B 版本的 TPS 提升 ≥ 10% 且 RT P99 不劣化超过 5%,则判定为正向优化。
指标 A 版本(基线) B 版本(实验) 判定
TPS 3200 4100 +28% ✅
RT P99 120ms 115ms -4% ✅
错误率 0.3% 0.4% 可接受 ✅

2.6 本章小结

压力测试是性能验证的基石。掌握 TPS、QPS、RT、错误率这四个指标的定义、计算方式和联合解读方法,是后续进行回放验证和 A/B 分流的前提。记住:没有基线,就没有对比;没有拐点,就没有深度。