QPS 与并发数换算

QPS 约等于并发数除以平均响应时间;反推时两者联动:提升并发不必然提升吞吐,瓶颈资源饱和后延迟上升、吞吐停滞。

QPS 与并发数是什么关系

两者通过平均响应时间互相换算:QPS 约等于并发数除以平均响应时间(秒)。这说明它们不是独立指标——提高并发并不保证提高吞吐,一旦瓶颈资源饱和,延迟会快速上升,吞吐停滞甚至下降,多出来的并发只变成了排队。

怎么用来做容量判断

先算目标吞吐需要的并发数,再反查线程池与连接池能否满足;如果并发需求超过池容量,请求只能在队列中等待,等待又拉长响应时间,进一步推高所需并发,形成恶性循环。因此容量核算要同时观察吞吐与延迟两条曲线,以拐点而不是极限值作为日常水位。

基本信息

QPS 口径统计正确完成的请求数每秒
并发口径在途请求数,包含排队与处理中的请求
换算关系QPS 约等于并发除以平均延迟(秒)
验证方法逐步加压,绘制吞吐与延迟曲线找拐点

测算步骤

  • 固定负载阶梯加压,每级持续数分钟并逐级提升并发
  • 记录每级的实测吞吐、P95、P99 与错误率曲线
  • 定位拐点:吞吐不再上升而延迟快速抬升的负载点
  • 交叉验证:把实测拐点与公式估算值互相对照
  • 以拐点的七成到八成作为日常容量水位,峰值另配冗余

和限流、线程池怎么配合

限流阈值应当来自实测拐点而不是拍脑袋:先找到吞吐不再上升的负载点,再取其一定比例作为限额,才能既保护系统又不过早拒绝合法流量。线程池与连接池的容量要一起核对,因为并发需求会同时落在两者上,其中任意一个饱和都会让请求排队。三者配合的目标是让过载表现为快速失败,而不是表现为延迟无上限增长。

平均延迟会掩盖长尾:容量核算用高分位更稳妥,否则会出现均值指标达标、超时率已经超标的情况,用户体验与监控结论完全相反。

易错点

  • 把吞吐目标直接当并发目标,线程数配置错误
  • 只看平均延迟,P99 已经大面积超时却仍认为容量充足
  • 并发压上去后发现吞吐不再增长,却继续加并发导致错误率飙升
  • 压测在低延迟的测试环境完成,拿到生产后拐点位置完全不同

数据来源与参考

  • 《性能之巅(第 2 版)》(Gregg)
  • Google SRE Book:Managing Load
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌