自语之对QPS&TPS&RPS的理解

1,941 阅读3分钟

前言

笔者很早就接触了TPS&QPS这两个名词,所以在上学期间和人交流,一谈到项目的开发和项目的架构,一口一个QPS&TPS、高可用、高性能、高并发…….(其实就是个简单的管理系统)。

可能是随着年龄的增长,记忆越来越不好了(刚毕业)。每次在设计文档中看到TPS&QPS等名称,都无法立即反应过来这些名词有什么用。

嗯。这篇博文记录一些笔者的理解(主要是TPS&QPS&RPS)。

其实,不管是TPS、QPS还是RPS,大部分都与系统的性能有关。关于这块,读者们可以去看下关于性能压测的文章,里面有更多的名称,比如:VU、RT、IP、Throughput等。

什么是TPS?Transactions Per Second, 即每秒传输的事务处理个数
  • 何谓事务?记住,该事务要与数据库的事务区分开。
    • 在TPS中, 一个事务是指客户端向服务器发送请求,直到服务器做出反应的过程。
    • TPS过程 = 客户端请求服务端+服务端处理逻辑+服务端响应客户端。
  • 所以, 在性能测试中, 客户端发送请求时开始计时, 一直到收到服务端响应结束计时, 以此来计算该时间段完成事务的个数, 最终利用TPS做出评估。
什么是QPS?Queries Per Second, 即每秒处理查询的个数/率
  • QPS是一台服务器,每秒能响应的查询次数。一般用来衡量服务器能在规定的时间内能处理多少流量的标准。
  • 在QPS中,主要强调是服务器的处理能力。
TPS和QPS的例子:

很多文章里面,都可有可无地提到QPS和TPS的异同,比如QPS是特殊的TPS(笔者也没懂意思)。

TPS和QPS的关系,笔者想在此举个栗子:

比如,客户端发出一个网页的请求A。

服务端收到请求A后,进行内部处理(查询数据…),之后把查询的数据响应给客户端。

我们假设所有的请求和响应都是1s内处理完毕。

那么,客户端发出一个网页请求A,对于一个页面的一次访问请求,我们称之为TPS。

众所周知,对页面的发起一次请求,可能会对服务产生多次查询操作(css加载、js加载、数据渲染加载)。

那么,服务器产生的查询操作,可以计入QPS之列。

什么是RPS?Requests Per Second, 即每秒处理请求的个数
  • 在性能压测中, 有个Little定律定义了:并发数、RPS和RT之间的关系。
    • 并发数 = RPS * RT
    • 其中RT = 响应时间
  • 所以 RPS = 并发数 / RT。
  • 一般在使用RPS描述一个系统的时候,指的是某个并发用户下单位时间内能处理的最大请求数。

总结

TPS:强调事务, 即请求发起和请求响应的处理过程。

QPS:强调查询,一般一个TPS, 对应N个QPS。

RPS:强调并发数,一般用于衡量系统的吞吐率。

在开发层面来说:

TPS:一次业务接口的调用。

QPS:一次方法调用。