1.背景

最近看了阿里巴巴中间件写的一篇文章,讲述了关于并发,RPS,RT之间的关系。感觉收获颇丰。自己使用JMeter工具对公式进行了验证。

2.验证

我们先来看几个基础知识定义:

  1. TPS:每秒完成的事务数。
  2. QPS:每秒发送的请求数(同RPS)。
  3. RT:交易响应时间。
  4. VU虚拟用户数(VU是LR中的叫法,对应JMeter里的线程数)

针对以上术语定义,相信大家早已耳濡目染。唯一需要强调的是TPS(可以包含1到N个请求),本文均以一个请求来进行测试验证。

Little定律公式:并发用户数 = QPS x RT

  • 测试脚本结构图:

说明:JMeter版本5.1.1,采用JMeter自带Java请求(JavaTest),将Sleep_Time设置为1。

  • 线程组设为100并发,运行10秒中,测试结果如下:

套用公式:并发数=701.3291634089131 x 0.133 = 93.276778679 ,与预期并发数(100)相差较大。初步怀疑是样本数太少,导致偏差较大。

  • 线程组设为100并发,运行30秒中,测试结果如下:

套用公式:并发数=752.193926548995 x 0.129 = 97.033016524692 ,与预期并发数(100)还是有点差距。初步验证怀疑是正确的。

  • 线程组设为100并发,运行180秒中,测试结果如下:

套用公式:并发数=789.7479728492222 x 0.126 = 99.508244579002,与预期并发数(100)基本一致。考虑到性能消耗,可以认定公式的正确性(假象下如果此场景运行无限长时间,那么可以推测出:吞吐量 x 平均响应时间的值无限接近线程组设定的并发值)。

3.QPS与TPS引发的问题

我们再来验证个有趣的问题:

由此图可以推算出:ART为126ms,也就是1s能发送大约7.9365个请求,100并发1秒能发出约:793.650个请求,也就是QPS=793.650笔/秒,与图中吞吐量的值几乎一致。可以看作:当前QPS与吞吐量值相等,而此时的吞吐量可以看成TPS。

我们改动下脚本:

说明:增加了QPS控制器

我们再次执行,结果如下:

笔者脚本中限制了:最大QPS为200,此时吞吐量约为198.682,两者基本一致,进而验证了(笔者感觉导致误差的原因在于:场景启动时需要一个warm up 过程,不能在启动场景的瞬间就达到限制的200QPS)。笔者将脚本中的JAVA请求换成本地HTTP请求,测出的现象均一致,由于篇幅限制就不再赘述。

此时再用老套路计算下QPS,平均响应时间为127ms,推算出1s能发送7.87401笔,100并发能发送787.401笔,我擦了,为啥与预期200笔差距这么大?

注意:这种方式计算出的值只是理论值,因为笔者脚本中已经设置了200QPS限制,并不限制请求的RT(换句话说只限制了单位时间内发送的请求量,再或者可以理解成限流)

结论:单独对QPS与TPS进行对比是没有意义的,他们是不同的衡量指标。在真实的环境下往往一个事务包含多个请求(即多个请求组成一个事务),此时再比较两者,会发现QPS要比TPS大几倍。

VU TPS QPS RT 计算公式的更多相关文章

  1. mysql中TPS, QPS 的计算方式

    今天突然有个同事问题一个问题, mysqlTPS和QPS的计算公式是什么? 以前确实也没有关注过这个计算公式,所以查了下学习了下: 下面是参考内容.  在做db基准测试的时候,qps,tps 是衡量数 ...

  2. 【MySQL】计算 TPS,QPS 的方式

     在做db基准测试的时候,qps,tps 是衡量数据库性能的关键指标.本文比较了网上的两种计算方式.先来了解一下相关概念. 概念介绍: QPS:Queries Per Second         查 ...

  3. 搞懂高并发性能指标:QPS、TPS、RT、吞吐量

      一.QPS,每秒查询 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的 ...

  4. PV UV TPS QPS

    名词解释 PV Page View,网页浏览量.网页被读者调用浏览的次数.网页每次打开或刷新一次页面,记录一次.用户对同一页面的多次访问,访问量累计. UV Unique Visitor,独立访问者. ...

  5. 利用脚本获取mysql的tps,qps等状态信息

    #!/bin/bash mysqladmin -uroot -p'123456' extended-status -i1|awk 'BEGIN{local_switch=0;print "Q ...

  6. 性能调优 -- TPS&QPS

    无论在工作中,还是看一些技术文章的时候,经常听到TPS.QPS这两个术语,那么两者分别是什么?又有哪些区别? QPS:query per second,是指单位时间内请求的数量. TPS:表示一个事务 ...

  7. QPS 机器计算公式

    QPS = req/sec = 请求数/秒 QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数 原理:每天80%的访问集中在20%的时间里,这20%时间 ...

  8. tps,qps

    http://blog.itpub.net/22664653/viewspace-767265/

  9. 利用sysbench进行MySQL OLTP基准测试

      Preface       In order to know clearly about the real performance threshold of database server,we ...

随机推荐

  1. kubernetes安装部署-day01

    一.基础环境的准备: 1.1.安装docker: docker的官网是:https://www.docker.com/ 1.1.1.rpm包安装: 官方下载地址:https://download.do ...

  2. CF543B Destroying Roads 题解

    看到没有题解就贡献一波呗 分析: 这题其实就是想让我们求一个图中两条最短路的最短(好把更多的边删掉). 我们先考虑一条最短路,别问我我怎么会的显然,就是s和t跑个最短路再用n-就行. 然后就是两条喽! ...

  3. 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)

    微信时代的今天,短信一样不可缺席,大系统都有集成短信接口.若只是临时用一下,若能够直接在Excel上加工好内容就可以直接发送,这些假设在此篇批量群发短信功能中都为大家带来完美答案. 业务场景 不多说, ...

  4. Hadoop学习-hdfs安装及其一些操作

    hdfs:分布式文件系统 有目录结构,顶层目录是:  /,存的是文件,把文件存入hdfs后,会把这个文件进行切块并且进行备份,切块大小和备份的数量有客户决定. 存文件的叫datanode,记录文件的切 ...

  5. ES6 symbol 以及symbol的简单应用

    前置 1.ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值. 2.Symbol 值通过Symbol函数生成. 3.Symbol 函数可以接受一个字符串作为参数,表示对 Symbol 实 ...

  6. 面向对象和pickle模块结合

    面向对象和pickle模块相关 1.面向对象: class 类名: def init(self,参数1,参数2): self.对象的属性1 = 参数1 self.对象的属性2 = 参数2 def 方法 ...

  7. IDEA及IDEA汉化包

    IDEA 官网:http://www.jetbrains.com/idea/download/#section=windows IDEA社区版(百度云):http://pan.baidu.com/s/ ...

  8. linux初学者-iptables篇

     linux初学者-iptables篇 iptables是防火墙的一种,是用来设置.维护和检查linux内核的IP过滤规则的,可以完成封包过滤.封包重定向和网络地址转换(NAT)等功能. iptabl ...

  9. CSRF_TOKEN

    目的是防御CSRF攻击. Token就是令牌,最大的特点就是随机性,不可预测. CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中, ...

  10. LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素

    题目 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. 您能 ...