QPS与TPS区分及压测指标解读
在性能压测中,QPS(Queries Per Second)和TPS(Transactions Per Second)是两个关键但易混淆的指标。以下是它们的核心区别和解读方法:
1. 本质区别
指标 | 定义 | 适用范围 | 粒度 |
---|---|---|---|
QPS | 每秒的请求量(HTTP请求、API调用等) | 网络层或接口层性能评估 | 较细(单个请求) |
TPS | 每秒完成的事务数(业务逻辑单元) | 业务系统或数据库性能评估 | 较粗(业务闭环) |
-
QPS:统计所有到达服务器的请求(如HTTP GET/POST),无论是否构成完整业务逻辑。
-
TPS:必须完成一个完整业务链(例如:支付=下单+扣款+日志记录)。
2. 典型场景对比
-
场景1:一个HTTP查询接口(无DB写入)
-
QPS=1000,TPS=1000(1次请求=1次事务)
-
-
场景2:用户注册(需验证+写DB+发邮件)
-
QPS=500(500次HTTP请求),但TPS可能只有100(因每个事务包含多个子操作)
-
-
场景3:电商下单(涉及多个微服务调用)
-
前端可能发送1个API请求(QPS+1),但后台可能触发10个服务调用(TPS=1,因属于同一业务事务)。
-
3. 压测指标解读
-
QPS高但TPS低:
-
可能存在大量无效请求(如爬虫)、接口设计不合理(需多次请求完成一个事务),或后端处理能力不足(事务堆积)。
-
-
TPS接近QPS:
-
系统简单高效(1请求=1事务),或压测未覆盖复杂业务链。
-
-
TPS超过QPS:
-
通常不可能(除非统计错误)。若出现,需检查是否将子请求误计为独立事务。
-
4. 如何选择压测指标?
-
测试网关/负载均衡:关注QPS(衡量请求吞吐能力)。
-
测试核心业务(如支付、订单):必须监控TPS(反映真实业务处理能力)。
-
数据库压测:TPS更关键(如每秒SQL事务数)。
5. 附加技巧
-
关联分析:结合响应时间(RT)判断:
-
若QPS上升但TPS不变且RT增加,说明系统遇到瓶颈(如DB锁竞争)。
-
-
工具差异:
-
JMeter中,QPS=样本数/秒,TPS需通过事务控制器统计。
-
LoadRunner直接区分Hits/sec(QPS)和Transactions/sec(TPS)。
-
总结:QPS是技术视角的流量指标,TPS是业务视角的有效能力指标。设计压测时,需根据测试目标选择核心指标,并结合错误率、RT等综合分析系统瓶颈。