十分想念顺店杂可。。。
在 JMeter 中,TPS 和 QPS 是衡量系统性能的两个核心指标,二者既有联系又有明确区别,核心差异在于统计对象的粒度不同。
1. 概念定义
-
TPS(Transactions Per Second,每秒事务数)
指系统每秒能完成的完整业务事务 数量。
一个 "事务" 通常是一个完整的业务流程(如 "用户登录""下单支付"),可能包含多个连续的请求(如登录需先访问登录页、再提交账号密码)。
TPS 更贴近真实业务场景,反映系统处理 "端到端业务" 的能力。
-
QPS(Queries Per Second,每秒查询数)
指系统每秒能处理的单个请求 / 查询 数量。
一个 "查询" 通常对应一个独立的操作(如一次 HTTP 请求、一次数据库查询),是比 "事务" 更细粒度的单位。
QPS 反映系统处理 "原子性操作" 的能力。
2. JMeter 中的体现与统计方式
JMeter 通过不同的组件和监听器来统计这两个指标,核心区别在于是否使用事务控制器定义 "事务"。
(1)TPS 的统计
需通过 事务控制器(Transaction Controller) 定义事务范围:
- 步骤:在测试计划中添加 "事务控制器",将一个业务流程包含的所有请求(如登录页请求、登录提交请求)放入该控制器内,即定义了一个 "事务"。
- 查看:在监听器(如
Summary Report
、Aggregate Report
)中,选择事务控制器的名称作为统计对象,其 "Throughput"(吞吐量)即为 TPS(每秒完成的事务数)。
(2)QPS 的统计
QPS 对应单个请求的处理能力,无需事务控制器:
- 统计对象:直接以单个取样器(如
HTTP Request
)为单位。 - 查看:在监听器中选择单个请求的名称,其 "Throughput" 即为 QPS(每秒处理的该请求数量)。
3. 关键区别与联系
- 粒度不同:TPS 是 "业务流程级" 指标(多个请求的集合),QPS 是 "请求级" 指标(单个操作)。
- 数值关系 :若一个事务包含 N 个请求,则理论上 "TPS × N ≤ QPS 总和"(忽略其他请求时,QPS 总和约为 TPS × N)。
例:一个 "下单" 事务包含 3 个请求(查询商品、提交订单、支付),若 TPS 为 100,则这 3 个请求的 QPS 总和约为 300。
总结
- 关注 "业务整体性能" 时,看 TPS(需用事务控制器定义业务流程);
- 关注 "单个接口 / 请求性能" 时,看 QPS(直接统计单个请求的吞吐量)。
JMeter 的 "Throughput" 指标本身是 "每秒处理的操作数",具体是 TPS 还是 QPS,取决于统计对象是 "事务" 还是 "单个请求"。