一、压测基础认知:什么是压力测试、为什么需要压测、压测的核心目标

各位同学好,我是老K。今天咱们聊聊压测最基础的东西。

很多人一听到「压力测试」,就觉得是拿工具怼着系统猛打,看它什么时候挂。嗯,这个理解不能说错,但太片面了。我做了这么多年性能测试,见过太多团队把压测当成「找极限」的游戏,结果上线后该崩还是崩。

说白了,压力测试不是为了让系统崩溃,而是为了在它崩溃之前,搞清楚它到底能扛多少。

1.1 什么是压力测试

压力测试,英文叫 Stress Testing。它的核心逻辑很简单:模拟真实用户行为,给系统施加越来越大的负载,观察它的表现。

我习惯把它分成两类:

  • 负载测试:在预期流量范围内,看系统稳不稳
  • 压力测试:超出预期流量,看系统什么时候开始出问题

举个例子。你开发了一个电商网站,预估双十一峰值是每秒1万请求。负载测试就是测1万请求时系统表现如何;压力测试则是测到1.2万、1.5万、2万,看它什么时候响应变慢、什么时候报错、什么时候彻底挂掉。

核心要点:压测不是一次性行为,而是一个持续发现瓶颈、验证优化效果的过程。

1.2 为什么需要压测

这个问题我问过很多刚入行的同学。最常见的回答是:「怕上线后崩了。」

对,但不全对。

我个人觉得,压测的价值体现在三个层面:

  1. 验证容量规划:你买的服务器够不够?数据库连接池配多大?这些不是拍脑袋决定的,得靠数据说话。
  2. 发现性能瓶颈:代码写得再漂亮,一上压测可能就原形毕露。我记得有一次帮一个金融项目做压测,发现TPS死活上不去,最后定位到是日志框架的同步写盘拖了后腿。
  3. 保障用户体验:用户不会管你系统内部多复杂,他们只关心页面打开快不快、操作流不流畅。

避坑指南:我曾经见过一个团队,上线前只做了功能测试,觉得压测「没必要」。结果上线第一天,用户量一上来,数据库连接池直接打满,整个服务瘫痪了4个小时。嗯,从那以后他们每次发版前必做压测。

1.3 压测的核心目标

压测到底看什么?三个指标:吞吐量、响应时间、错误率。这三者缺一不可。

1.3.1 吞吐量

吞吐量,说白了就是系统单位时间内能处理多少请求。常见的单位有:

  • TPS(Transactions Per Second):每秒事务数
  • QPS(Queries Per Second):每秒查询数
  • RPS(Requests Per Second):每秒请求数

你想想看,一个系统TPS是100,另一个是1000,哪个更扛打?一目了然。

但这里有个坑:吞吐量不是越高越好。我见过有人为了追求高TPS,把业务逻辑全砍了,只留一个空接口。这种压测数据有什么意义?

我的习惯:压测时一定要带上真实业务逻辑,哪怕慢一点,数据才有参考价值。

1.3.2 响应时间

响应时间,就是用户发一个请求到收到回复,花了多长时间。通常关注这几个分位值:

分位值 含义 典型阈值
P50 50%的请求在这个时间内完成 < 200ms
P90 90%的请求在这个时间内完成 < 500ms
P99 99%的请求在这个时间内完成 < 1000ms

为什么看分位值而不是平均值?因为平均值会被极端值拉偏。举个例子,99个请求都是10ms,1个请求是10秒,平均值是100ms左右,看起来还行。但那个等了10秒的用户,早就骂娘了。

1.3.3 错误率

错误率,就是所有请求中失败的比例。理想情况下应该是0%。但实际项目中,我们通常允许一个极低的错误率,比如0.1%以内。

常见的错误类型:

  • 超时:请求等了太久,客户端主动放弃了
  • 连接拒绝:服务器忙不过来,直接不接客了
  • 业务异常:比如库存不足、参数校验失败等

注意:错误率突然飙升,往往是系统即将崩溃的前兆。我曾经在一次压测中看到错误率从0%跳到5%,紧接着3秒后TPS直接腰斩。这时候就该停掉压测,赶紧排查了。

1.4 三个指标的关系

吞吐量、响应时间、错误率,这三者不是独立的。它们之间有一个经典的三角关系:

  • 负载增加 → 响应时间上升 → 吞吐量先升后降
  • 响应时间超过阈值 → 错误率开始出现
  • 错误率升高 → 有效吞吐量下降

我习惯用一张图来理解这个关系:

压测核心指标关系图 并发用户数(负载) 指标值 吞吐量 响应时间 错误率 拐点 健康区 临界区 危险区

从这张图可以看得很清楚:

  • 在健康区,三个指标都表现良好
  • 到了拐点,响应时间开始明显上升,吞吐量增速放缓
  • 进入临界区,错误率开始冒头,系统进入不稳定状态
  • 到了危险区,错误率飙升,吞吐量反而下降,系统濒临崩溃

我的建议:压测时重点关注拐点位置。这个点就是系统的「安全红线」,日常运维中不要超过这个负载。

1.5 小结

这一章我们聊了压测最核心的三个概念:

  • 什么是压测:模拟真实负载,观察系统表现
  • 为什么需要压测:验证容量、发现瓶颈、保障体验
  • 三个核心指标:吞吐量、响应时间、错误率,以及它们之间的三角关系

嗯,基础打牢了,后面才能走得更远。下一章我们聊聊压测工具的选择,到时候我会分享一些实际项目中的踩坑经验。

可可精品资料库