当前位置: 首页 > article >正文

QPS 和 TPS 详解

QPSTPS 是性能测试中的两个核心指标,用于衡量系统的吞吐能力,但关注点不同。以下是具体解析:


1. QPS(Queries Per Second)

定义:每秒查询数,表示系统每秒能处理的请求数量(无论请求是否成功)。
适用场景

  • Web服务:如API接口、HTTP请求。
  • 缓存/数据库:如Redis的GET/SET操作。

计算公式

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

示例

  • 一个HTTP接口在10秒内收到5000次请求,则 QPS = 5000 / 10 = 500

2. TPS(Transactions Per Second)

定义:每秒事务数,表示系统每秒能完成的事务数量(一个事务可能包含多个请求)。
适用场景

  • 业务链路的性能:如支付流程(包含下单、支付、通知等多个步骤)。
  • 数据库事务:如银行转账(扣款+入款需保证原子性)。

计算公式

TPS = 成功的事务数 / 测试时间(秒)

示例

  • 一个支付流程(包含3个API调用)在1分钟内完成1200笔交易,则 TPS = 1200 / 60 = 20

3. QPS 和 TPS 的关系

对比维度QPSTPS
粒度单次请求完整业务流(可能含多请求)
成功要求统计所有请求(含失败)仅统计成功完成的事务
典型场景接口压测、缓存性能测试支付、订单等业务场景

常见关联

  • 若一个事务包含N个请求,则 QPS ≈ TPS × N(假设无失败请求)。
  • 例如:支付事务包含3个API调用(下单、支付、回调),当TPS=100时,QPS可能接近300。

4. 实际应用示例

性能测试报告中的体现

**电商系统压测结果**  
- **QPS(接口层)**:订单查询API达到 1200 QPS(单接口请求)。  
- **TPS(业务层)**:下单支付全链路稳定在 200 TPS(含支付+库存扣减)。  
- **瓶颈分析**:当TPS > 200时,数据库CPU达到90%,需优化慢SQL。  

如何优化?

  • 提高QPS
    • 增加服务器实例(水平扩展)。
    • 使用缓存(如Redis减少数据库查询)。
  • 提高TPS
    • 优化事务逻辑(如异步处理非核心步骤)。
    • 数据库分库分表(降低单表压力)。

5. 面试常见问题

Q:为什么QPS高但TPS低?

  • 可能原因
    1. 事务包含复杂业务逻辑(如风控校验)。
    2. 数据库锁竞争(如秒杀场景)。
    3. 外部服务调用超时(如第三方支付接口)。

Q:如何设计压测脚本区分QPS和TPS?

  • JMeter示例
    • QPS:直接统计HTTP Request的吞吐量。
    • TPS:使用Transaction Controller将多个请求合并为一个事务。

6. 总结

  • QPS:关注请求吞吐量,适合接口级性能评估。
  • TPS:关注业务完整性,适合核心流程性能评估。
  • 测试开发价值
    • 在简历中明确区分两者(如“优化接口QPS从500提升至1200”)。
    • 分析QPS/TPS瓶颈能体现你的深度性能调优能力
http://www.lryc.cn/news/2393024.html

相关文章:

  • Word表格怎样插入自动序号或编号
  • 数据结构:导论
  • 青少年编程与数学 02-020 C#程序设计基础 13课题、数据访问
  • 无人机仿真环境(3维)附项目git链接
  • 湖北理元理律师事务所:债务优化中的“生活锚点”设计
  • Python 训练营打卡 Day 30-模块和库的导入
  • 前端实现图片压缩:基于 HTML5 File API 与 Canvas 的完整方案
  • 【Docker管理工具】部署Docker管理面板DweebUI
  • 【后端高阶面经:架构篇】50、数据存储架构:如何改善系统的数据存储能力?
  • 编程之巅:语言的较量
  • STM32 通过 ESP8266 通信详解
  • Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析
  • 晨控CK-FR03与汇川H5U系列PLC配置MODBUS TCP通讯连接操作手册
  • 山海鲸轻 3D 渲染技术深度解析:预渲染如何突破多终端性能瓶颈
  • t014-项目申报管理系统 【springBoot 含源码】
  • 阻止H5页面中键盘收起的问题
  • 将 AI 解答转换为 Word 文档
  • AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?
  • Go语言开发的GMQT物联网MQTT消息服务器(mqtt Broker)支持海量MQTT连接和快速低延时消息传输-提供源码可二次开发定制需求
  • JavaScript es6 语法 map().filter() 链式调用,语法解析 和常见demo
  • leetcode2221. 数组的三角和-medium
  • Express教程【001】:Express创建基本的Web服务器
  • asio之async_result
  • 代码随想录算法训练营 Day60 图论Ⅹ Bellmen_ford 系列算法
  • 独立机构软件第三方检测:流程、需求分析及电商软件检验要点?
  • Java构建Tree并实现节点名称模糊查询
  • shadcn/ui
  • 华为FreeArc能和其他华为产品共用充电线吗?
  • [网页五子棋][匹配模式]创建房间类、房间管理器、验证匹配功能,匹配模式小结
  • 实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.7 R语言解题