3. 吞吐量(Throughput)概念:QPS/TPS定义、吞吐量与延迟的关系、Little定律

吞吐量这个词,做性能测试的人天天挂在嘴边。但说实话,我见过不少团队把QPS和TPS搞混,甚至直接用并发数来评估系统能力。这其实挺危险的。

今天咱们就把吞吐量这个概念彻底掰扯清楚。我会结合自己踩过的坑,帮你建立一套扎实的理解。

3.1 QPS与TPS:别再傻傻分不清

QPS(Queries Per Second),每秒查询数。它通常用来衡量读接口的吞吐能力。比如你搜索商品、查看订单详情,这些都属于查询操作。

TPS(Transactions Per Second),每秒事务数。它更强调一个完整的事务链路。比如下单操作,可能包含扣库存、生成订单、支付等多个步骤,这算一个完整事务。

我个人的习惯是:

  • 纯查询接口,用QPS衡量
  • 写操作或复杂业务链路,用TPS衡量

举个例子你就明白了。一个电商系统的首页推荐接口,每秒能处理5000次请求,这就是5000 QPS。而一个下单接口,每秒能完成200笔完整交易,这就是200 TPS。

核心区别:QPS关注单次请求,TPS关注完整事务。一个TPS可能包含多个QPS。

我在项目中遇到过这样的情况:某团队宣称系统TPS能达到10000,结果一压测发现,他们统计的是接口调用次数,而不是完整事务数。说白了,就是把QPS当TPS报了。这会导致容量评估严重失真。

3.2 吞吐量与延迟:一对欢喜冤家

吞吐量和延迟的关系,就像跷跷板的两头。你压得越狠,延迟往往就越高。

为什么会这样?

系统资源是有限的。当请求量增加,CPU、内存、IO等资源开始争抢。每个请求等待的时间变长,延迟自然就上去了。

我画了一张图,帮你直观理解这个关系:

吞吐量与延迟关系曲线 吞吐量 (QPS/TPS) 延迟 (ms) 拐点 线性区:延迟稳定 饱和区:延迟飙升 最大吞吐量

你看这张图,左边有一段平缓的区域,叫线性区。在这个区域里,吞吐量增加,延迟基本不变。这是系统最理想的工作状态。

但到了某个点——我习惯叫它拐点——情况就变了。再增加一点请求,延迟就会急剧上升。这就是系统进入饱和区的标志。

我的经验:做性能测试时,一定要找到这个拐点。它告诉你系统真正的极限在哪里。我曾经帮一个客户优化数据库,他们一直以为系统能扛5000 QPS,结果拐点在3200就出现了。超过这个值,延迟从50ms直接飙到800ms。

3.3 Little定律:吞吐量、并发数、延迟的数学关系

Little定律是排队论里的一个经典结论。它很简单,但非常实用:

并发数 = 吞吐量 × 平均延迟

用公式表示就是:N = X × R

其中:

  • N:系统中平均的并发请求数
  • X:吞吐量(每秒完成的请求数)
  • R:平均响应时间(延迟)

你想想看,这个公式意味着什么?

只要知道任意两个指标,就能算出第三个。这在性能测试中太有用了。

举个例子:

假设你的系统平均延迟是100ms(0.1秒),你希望吞吐量达到1000 QPS。那么系统需要支撑的并发数是多少?

N = 1000 × 0.1 = 100

也就是说,你需要同时维持100个并发请求在系统中处理。

实战应用:我经常用Little定律来做容量规划。比如客户说「我们预计峰值并发用户是5000」,那我就会问「你期望的响应时间是多少?」。如果他说「2秒以内」,那就能算出目标吞吐量:X = 5000 / 2 = 2500 QPS。这样目标就清晰了。

3.4 避坑指南:吞吐量测试的常见误区

做吞吐量测试时,有几个坑我踩过,也看别人踩过。今天一并告诉你:

  1. 混淆QPS和TPS:前面说过了,这是最常见的错误。一定要根据业务场景选择合适的指标。
  2. 忽略思考时间:有些测试工具默认不模拟用户思考时间,导致压测结果虚高。我建议加上合理的思考时间,更贴近真实场景。
  3. 只看平均延迟:平均延迟会掩盖长尾问题。我习惯同时关注P99、P999延迟。曾经有个系统平均延迟50ms,但P999延迟高达5秒,用户体验极差。
  4. 在非稳定状态下测吞吐量:系统刚启动时,缓存是空的,这时候测出来的吞吐量偏低。我一般会让系统预热5-10分钟再开始记录数据。

特别注意:Little定律成立的前提是系统处于稳定状态。如果系统正在抖动(比如频繁GC、网络波动),公式就不准了。所以测试前一定要确认系统状态稳定。

3.5 一张图总结本章核心

我把吞吐量的核心概念整理成了一张知识结构图,方便你回顾:

吞吐量 (Throughput) QPS / TPS 定义 QPS:每秒查询数 TPS:每秒事务数 一个TPS可能包含多个QPS 吞吐量 vs 延迟 线性区:延迟稳定 拐点:系统极限 饱和区:延迟飙升 Little 定律 N = X × R 并发数 = 吞吐量 × 延迟 知二求一,容量规划利器 核心要点 • 明确QPS和TPS的区别,按场景选择 • 找到系统拐点,避免进入饱和区 • 善用Little定律做容量评估

嗯,吞吐量这部分内容就这些了。记住,理解概念只是第一步,真正有价值的是你在实际项目中怎么用这些知识去发现问题、解决问题。

想要更多资料,联系可可