3分钟理清QPS、TPS、RT 以及它们之间的关系

在评估系统性能的时候,我们经常会听到 QPS、TPS、RT、吞吐量等等一些概念,包括在一些面试场景下可能也会遇到这些概念,我们来稍微梳理一下。

做一个简单的概念扫盲。

一 QPS

QPS(Queries Per Second) 是每秒的查询率,它表示一台服务每秒响应的查询的次数。

具体来说,QPS 反映了系统在高并发环境下处理请求的能力。一个高 QPS 的系统能够在单位时间内处理更多的请求,从而提供更好的用户体验和更高的吞吐量。相反,QPS 较低的系统可能在面对大量请求时会出现响应延迟或请求失败的情况。

举个栗子:

假设服务器 1 秒响应 500 次请求,那么此时 QPS 就是 500。

二 TPS

TPS(Transactions Per Second) 表示每秒事务处理的数量,一个事务表示客户端向服务器发送请求,然后响应的过程。

举个栗子

比如用户在 jd 上下单的时候,每当用户下单请求被服务器接受到之后,服务需要保存订单、扣减商品库存、确认支付等等这一些列的操作,所有过程都完成后,将结果响应给客户端。这个完整的过程就是一次事务,TPS 则表示每秒内可以完成多少次这样的请求。

整体上来说,一个 TPS 包括了三个部分:

  1. 用户请求服务器
  2. 服务器自己的内部处理
  3. 服务器返回给用户

这样一个完整的过程就是一个 TPS。

有的小伙伴分不清 TPS 和 QPS,简单来说是这样:

  • 如果是对一个查询接口压测,且这个接口内部不会再去请求其它接口,那么 TPS = QPS,否则,TPS ≠ QPS。
  • 如果是容量场景,假设 N 个接口都是查询接口,且这个接口内部不会再去请求其它接口,QPS = N * TPS。

第一点好理解,针对第二点我举一个简单的案例:假设请求一个页面,这就是一个 TPS,这个页面中又发送了 5 次请求向服务器加载数据,那么 QPS=TPS*5

三 RT

RT(Response-time)响应时间,这个表示执行一个请求从开始到最后收到响应数据所花费的总时间,即从客户端发起请求到收到服务器响应结果的时间。

如果忽略网络传输时间,响应时间是处理时间和等待时间的总和,其中:

  • 处理时间是完成请求要求的工作所需的时间
  • 等待时间是请求在被处理之前必须在队列中等待的时间

RT 是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。

举个栗子

这里,RT = T2 - T1。

四 并发数

系统并发数是指在某一时刻,系统中能够同时处理的请求数量。这个指标通常用来衡量系统在高负载情况下的性能和处理能力。

五 几个概念之间的关系

除了前面第二小节和大家介绍的 TPS 和 QPS 之间的公式之外,再给小伙伴们两个公式:

  • RT = 并发数/QPS
  • QPS = 并发数/RT

好啦,几个常见的概念,小伙伴搞懂了吧~

作为程序员,持续学习和充电非常重要,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。低代码也是一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革,推荐一个低代码工具。

应用地址: https://www.jnpfsoft.com
开发语言:Java/.net

这是一个基于Flowable引擎(支持java、.NET),已支持MySQL、SqlServer、Oracle、PostgreSQL、DM(达梦)、 KingbaseES(人大金仓)6个数据库,支持私有化部署,前后端封装了上千个常用类,方便扩展,框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用。

至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。

相关推荐
易云码13 分钟前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码
向阳121816 分钟前
Dubbo负载均衡
java·运维·负载均衡·dubbo
newxtc19 分钟前
【客观理性深入讨论国产中间件及数据库-科创基础软件】
数据库·中间件·国产数据库·国产中间件·科创
水月梦镜花21 分钟前
redis:list列表命令和内部编码
数据库·redis·list
荒Huang1 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能1 小时前
气爪在自动化装配线中是如何应用的?
运维·自动化
MonkeyKing_sunyuhua1 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
天郁青1 小时前
数据库交互的本地项目:后台管理系统
数据库·交互
马剑威(威哥爱编程)1 小时前
MongoDB面试专题33道解析
数据库·mongodb·面试