性能压测核心指标详解

做性能压测这么多年,我最大的感悟就是:指标不是冷冰冰的数字,它们是系统的「体检报告」。很多团队一上来就盯着QPS猛冲,结果系统崩了都不知道为什么。今天我们就把这四个指标——QPS、响应时间、错误率、资源利用率——拆开揉碎了讲清楚。

为什么是这四个指标?

你可以把它们想象成汽车的四个仪表盘:

  • QPS(每秒查询数)—— 速度表,看能跑多快
  • 响应时间 —— 油门响应,踩下去多久才有反馈
  • 错误率 —— 故障灯,有没有爆缸
  • 资源利用率 —— 油温、水温、胎压,看哪个部件在扛不住

少了任何一个,你都没法精准定位性能瓶颈。我记得有一次帮客户压测,他们只报了QPS,说没问题。我上去一测,QPS确实达标,但响应时间已经飙到5秒了——用户早跑光了。

QPS — 吞吐量的硬指标

QPS就是每秒能处理多少个请求。公式很简单:

QPS = 总请求数 / 总时间(秒)

实际压测时,我习惯看稳定QPS而不是峰值。为什么?因为系统可能刚启动时缓存没预热,前几秒数据不准确。我通常会让压测持续3-5分钟,取中间2分钟的平均值。

我的小技巧:如果QPS上不去,先别急着加机器。我在项目中遇到过,一个简单的接口QPS死活到不了1000,查了半天发现是数据库连接池只有10个连接。调大到50后,QPS直接翻了3倍。

响应时间 — 用户体验的尺子

响应时间不能只看平均值。平均值会被少数慢请求拉高,但更可怕的是那些「尾巴」——P99延迟。我习惯看三个分位值:

指标 含义 典型阈值(仅供参考)
P50(中位数) 50%的请求都在这个时间内完成 < 200ms 优秀
P95 95%的请求都能接受的速度 < 1s 可接受
P99 最慢的1%请求表现 < 3s 否则需要优化

我见过很多团队只看平均值,P99烂到10秒还觉得自己系统没问题。说白了,那个最慢的1%用户,很可能就是你的付费用户。

错误率 — 系统的容忍线

错误率分两类:

  • 协议层错误:HTTP 5xx、连接超时、断连
  • 业务层错误:返回码非0、业务逻辑失败

压测时我建议把错误率和QPS画在同一张图里。当QPS接近极限时,错误率往往会突然飙升。我曾经遇到过,某系统在QPS 2000时错误率0.1%,QPS 2200时直接跳到15%——说明已经过载了。

我的经验是:错误率超过1%就必须停掉压测排查。继续加压只会让系统雪崩。

资源利用率 — 瓶颈探测器

看资源利用率不是为了看「用了多少」,而是为了找出短板。我习惯把四个主要资源列个表:

资源 理想范围 危险信号
CPU 70%~90% >95% 持续 30 秒
内存 60%~80% 接近100%或频繁GC
磁盘 I/O 队列长度 < 2 iowait > 20%
网络带宽 低于上限的 80% 丢包率 > 0.1%

注意:CPU不是越高越好。如果CPU长期跑在95%以上,响应时间会急剧恶化,因为排队时间变长了。我习惯留10%~15%的余量给突发流量。

警示:不要只看资源平均值!我曾经被平均值骗过:一台机器CPU平均80%,但每10秒会冲到100%持续3秒。这种波动对QPS和响应时间影响极大。请务必看最大值和时间序列图。

它们之间如何互相影响?

这四个指标不是孤立的。我画了一张关系图,可以帮你快速理解:

性能指标关系 核心性能指标 QPS(吞吐量) 响应时间 错误率 资源利用率 QPS↑ 推动 资源消耗↑ 资源吃紧 → RT↑ RT超时 → 错误率↑ 循环影响:QPS↑ → 资源↑ → RT↑ → 错误率↑ → 部分请求失败,实际QPS反而下降

从图中你能看到,这四个指标形成了反馈环路。我在压测时最关注的就是这个环路在哪一个环节断裂——通常是资源利用率先到达极限,然后响应时间飙升,接着错误率爆发,最后QPS断崖式下跌。

实战经验与避坑指南

我的习惯:压测执行期间,我会同时打开四个监控面板:QPS曲线、RT分位图、错误率趋势、CPU+内存+IO热力图。一旦发现任意一个指标越过阈值,立刻暂停压测分析原因,而不是继续加压看极限在哪里。因为超出极限的数据没有意义,只会让系统雪上加霜。
避坑小记:我曾经遇到过一件怪事——QPS和错误率都正常,但用户反馈说系统很慢。后来发现是资源利用率中的网络带宽到了瓶颈,导致每个请求都要排队等待发包。从应用层看QPS没降,但实际响应时间长了10倍。所以,别只盯着CPU和内存,网络和磁盘一样重要。
注意事项:压测时一定要记录基线值。比如在低负载下,P50响应时间是50ms。当压力上升,P50变成100ms时,你才能知道系统已经出现了明显的性能退化。没有基线,你无法判断当前数值是「正常波动」还是「异常信号」。

最后,我建议每个团队在压测开始前,先定义好这四个指标的上限阈值。把它们写进压测脚本里,一旦触发自动告警甚至自动停止。这样你不在现场也能放心跑压测——嗯,这就是自动化压测的魅力。