性能指标定义:响应时间、吞吐量、并发用户数、资源利用率、错误率
做性能测试这么多年,我见过太多团队一上来就闷头跑压测。结果呢?数据跑了一大堆,问他们「你的系统到底多快?」——没人说得清。
说白了,就是没把指标定义清楚。
今天咱们就把这五个核心指标掰开揉碎了讲。每个指标我都会结合真实项目经验,告诉你它到底怎么用、坑在哪。
1. 响应时间:用户感知的「快」与「慢」
响应时间,就是从用户发出请求到收到完整响应的时间。我习惯把它拆成三段:
- 网络传输时间:数据在客户端和服务端之间跑的时间
- 服务端处理时间:应用、数据库、中间件干活的时间
- 客户端渲染时间:浏览器或App把数据变成界面的时间
你想想看,用户说「慢」,到底是哪一段慢?
关键指标:
- 平均响应时间:容易受极端值影响,参考价值有限
- 百分位响应时间:我一般看P95和P99。P95表示95%的请求在多少毫秒内完成
- 最大响应时间:通常是个异常值,别太当真
我的经验:有一次给电商平台做压测,平均响应时间才200ms,看起来很美。但一查P99,好家伙,直接飙到3秒。后来发现是某个慢SQL在特定数据量下才触发。所以,只看平均值会骗人。
2. 吞吐量:系统到底能扛多少活
吞吐量衡量的是系统在单位时间内能处理多少请求。常见的单位有:
- TPS(Transactions Per Second):每秒事务数。一个事务可能包含多个请求
- QPS(Queries Per Second):每秒查询数。常用于读多写少的场景
- RPS(Requests Per Second):每秒请求数。最通用的指标
我个人习惯在接口层面用RPS,在业务场景层面用TPS。举个例子:
// 一个下单事务包含:
// 1. 查询商品详情(1个请求)
// 2. 创建订单(1个请求)
// 3. 扣减库存(1个请求)
// 4. 支付(1个请求)
// 这个事务的TPS = 1,但RPS = 4
注意:吞吐量和响应时间是一对冤家。系统吞吐量上去后,响应时间通常会变差。我见过有人把吞吐量压到极限,结果响应时间从200ms变成5秒——这其实已经不可用了。
3. 并发用户数:别被这个数字忽悠了
并发用户数,指的是同一时刻系统正在处理的用户数量。注意,是「正在处理」,不是「在线用户数」。
我曾经遇到一个客户,说他们系统有10万在线用户,要求并发支持5万。我一听就知道有问题。实际上,在线用户里大部分是挂着的,真正在操作的也就10%-20%。
| 概念 | 说明 | 典型比例 |
|---|---|---|
| 在线用户数 | 登录了但没操作的用户 | 100% |
| 活跃用户数 | 正在操作的用户 | 10%-20% |
| 并发用户数 | 同一时刻正在处理请求的用户 | 1%-5% |
避坑指南:我曾经帮一个金融项目做评估,他们按在线用户数的50%来设计并发。结果上线第一天就挂了。后来我们按业务高峰期的实际日志来算,发现并发只有在线用户的3%。所以,别拍脑袋,看数据。
4. 资源利用率:系统到底吃饱了没
资源利用率,就是CPU、内存、磁盘、网络这些硬件被用了多少。我一般关注这几个:
- CPU利用率:超过80%就要警惕,超过90%基本是瓶颈
- 内存利用率:看的是可用内存,不是已用内存。注意GC和内存泄漏
- 磁盘I/O:读写延迟和队列长度。队列长度超过2就说明磁盘扛不住了
- 网络带宽:看是否被打满。我遇到过带宽打满导致响应时间飙升的情况
嗯,这里要注意:资源利用率不是越高越好。CPU跑到99%不代表系统性能好,可能只是代码写得烂。
我的判断逻辑:
- 如果CPU高、其他资源低 → 计算密集型瓶颈
- 如果磁盘I/O高、CPU低 → 磁盘瓶颈
- 如果内存高、CPU低 → 内存泄漏或缓存配置问题
- 如果网络高、其他都低 → 带宽瓶颈
5. 错误率:系统崩溃的预警信号
错误率,就是失败请求占总请求的比例。我一般分两类看:
- HTTP错误:4xx(客户端问题)、5xx(服务端问题)
- 业务错误:接口返回200,但业务逻辑失败(比如库存不足)
为什么会这样?因为很多团队只看HTTP状态码,忽略了业务错误。我曾经遇到一个支付系统,压测时接口返回全是200,但实际有30%的订单支付失败——业务错误码藏在响应体里。
我的经验:错误率超过1%就要立即停止压测,排查原因。别想着「再压一会儿看看」,系统可能已经处于崩溃边缘。有一次我坚持继续压,结果数据库连接池被打爆,整个服务挂了20分钟。
知识体系总览
下面这张图,是我梳理的五个指标之间的关系。你看一眼就能明白:
说白了,这五个指标就像汽车的仪表盘。响应时间是速度表,吞吐量是里程表,并发用户数是载重表,资源利用率是油温表,错误率是故障灯。少看一个,都可能翻车。
最后说一句:定义指标只是第一步。真正重要的是,你要知道每个指标的合理范围是多少。这个范围,就是你的性能基线。下一章,我会教你怎么搭建这个基线。
想要更多资料,联系可可