TPS、QPS、系统吞吐量、并发用户数区别及性能术语的理解

一、QPS/TPS


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

TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

Tps即每秒处理事务数,包括了

1)用户请求服务器

2)服务器自己的内部处理

3)服务器返回给用户

这三个过程,每秒能够完成N个这三个过程,Tps也就是3;

Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。

例如:访问一个页面会请求服务器3次,一次放,产生一个“T”,产生3个“Q” 

二、系统吞吐量


一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

        QPS(TPS):每秒钟request/事务 数量

        并发数: 系统同时处理的request/事务数

        响应时间:  一般取平均响应时间

理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间    或者   并发数 = QPS*平均响应时间

例:一个典型的上班签到系统,早上8点上班,7点半到8点的30分钟的时间里用户会登录签到系统进行签到。公司员工为1000人,平均每个员上登录签到系统的时长为5分钟。可以用下面的方法计算。
QPS = 1000/(30*60) 事务/秒
平均响应时间为 = 5*60  秒
并发数= QPS*平均响应时间 = 1000/(30*60) *(5*60)=166.7

一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达 到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下 降。

 

三、吞吐量的计算公式

从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量

从网络角度看,吞吐量可以用:字节/秒来衡量

对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力

以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。

当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU * R /

其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间

 

四、性能术语

1、并发用户数的计算公式

系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是5000个,那么这个数量,就是系统用户数。

同时在线用户数:在一定的时间范围内,最大的同时在线用户数量。
同时在线用户数=每秒请求数RPS(吞吐量)+并发连接数+平均用户思考时间

平均并发用户数的计算:C=nL / T

其中C是平均的并发用户数,n是平均每天访问用户数(login session),L是一天内用户从登录到退出的平均时间(login session的平均时间),T是考察时间长度(一天内多长时间有用户使用系统)

并发用户数峰值计算:C^约等于C + 3*根号C

其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js设置了location.href不跳转问题

今天碰到一个问题,用JS设置了location.href就是不跳转的问题。代码如下: $(‘#gofriendtab’).on(‘click’, function() { location.href “XXXXX”; }) 测试运行了一下,发现确实执行了这个代码,但是…

【TensorFlow】Win7+Anaconda+python3.6+Tensorflow1.9安装教程

相关链接 官网:https://tensorflow.google.cn/ github:https://github.com/tensorflow/tensorflow 中文社区网:http://www.tensorfly.cn/ 安装说明 平台:windows 7 Anaconda版本:4.6.14 python版本:3.6.…

【Jmeter篇】如何利用Jmeter配置元件计数器、随机变量制造批量数据和变量参数化?

一、计数器 1、线程组-配置元件-计数器 2、功能介绍 starting value:给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器 递增(Increment): 每次迭代后,给计数器增加的值 最大值(Maximum) :…

echarts自适应父div大小

百度了n种办法,试了n种办法后终于测出来了。 方法一:window.οnresizemyChart.resize; 但是没有效果 方法二: window.addEventListener("resize", function () { myChart.resize(); }); 依旧没有效果 方法三: &l…

软件工程经济学习题 答案(不保证对错,找不到答案)

一、资金等值计算 1.某IT企业今年向银行贷款20万元以购置一台设备。若银行贷款利率为10%,规定10年内等额偿还,试求每年的偿还金额。 2.某软件企业向银行贷款200万元,按年利率为8%进行复利计息,试求该企业第5年末连本带利一次偿还银…

【数据库】Mysql日期/时间相关函数汇总

当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。 只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。 在讨论日期查询的复杂性之前&a…

【测试方法篇】效率测试

一、操作数据库 1、测试页面数据翻页功能,使用insert插入多条数据,测试完成后,再删除插入的数据 2、订单表order,订单状态字段status 1新订单 2已提交订单 3已付款订单 4已发货订单 5已完成订单 已付款列表页,只…

Django+Jquery+Ajax+验证码登录案例

1,创建项目test04 2,创建应用app为booktest 3,注册应用booktest 作用让创建的应用运行起来 4,在项目根目录下创建模板templates目录 作用就是存放html文件在项目的settings.py文件中配置模板,如下图:5&…

【数据库】Mysql日期/时间函数实际案例

有一款金融产品,总共24期,每月2日到期还款日,第一个到期还款日为放款日下个月的2日,现在我们知道所有订单的放款时间,现在我们想统计每个订单当前时间是第几期。 举个简单例子:当期日期为2019-11-12&#…

【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动

之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢? 其实我们可以将用…

module 'queue' has no attribute 'Queue'解决

import queue q queue.Queue() q.put(a) q.put(b) print(q.get())错误: AttributeError: module queue has no attribute Queue 解决方法: 把程序名命名和包名一样导致错误。命名为queue1.py就ok了

【Python】import自己的模块报错

在实际使用python时,我们会将一些公共的东西写到一些基础模块中,供其他模块去调用,这时会去import自定义的一些基础模块,然后来导入。 自己写好了脚本,然后导入,导入的情况分为以下情况: 1. 运行…

Jmeter生成自动化和性能多维度测试报告(性能指标和监听器图表)

jmeter在命令行下还可以生成多维度的测试报告,里面包含了常用的性能指标和监听器图表。 一、环境要求 1、jmeter3.0版本之后开始支持动态生成测试报表 2、jdk版本1.7以上 3、需要jmx脚本文件 二、生成jtl文件 1、进入bin目录下cd jmeter -n -t C:\jmeter\apach…

python3判断字典、列表、元组为空以及字典是否存在某个key的方法

m1[] m2{} m3() m4{"name":1,"age":2} #也可用if not m1:print("m1不是列表") if m1:print("m1不是列表") else:print(m1)print("m1是空列表")if m2:print("m2不是字典") else:print("m2是空字典") if …

【Python】pyinstaller模块打包的exe在windows环境无法使用问题汇总

问题一:解决pyinstaller打包发布后的exe文件打开控制台闪退的问题 pyinstaller打包发布后的exe文件在自己电脑能够正常使用,但是给到别人的电脑时,打开exe文件却发生闪退,看不到具体的原因。 1、定位问题: 1.1.切换到…

Appium+PythonUI自动化测试之uiautomatorviewer和Inspector元素定位

一、uiautomatorviewer uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。 1、启动uiautomatorviewer.bat,打开sdk安装…

服务器购买和远程连接

1. 申请阿里云服务器 *打开阿里云ECS购买页面,并用淘宝账号登陆,可以按需购买。基础配置的话包月大约60元/月 在部署阶段也可以选择按使用流量付费,只需要32元/月,后续部署成功后进行配置升级 操作系统选择Ubuntu的最新版本 …

【批处理】通过bat文件执行python程序

有时我们写的一些python程序,由于每天都经常使用,因此不希望每次都打开IDE客户端或者cmd命令去执行,我们可以写一些bat脚本,每次需要执行时,双击一下脚本就可以了。下面介绍一下三种方法: 1. 简单方法&…

Ubuntu安装包时报错 E:Unable to locate package xxx(如:python3-pip)

一般进入Ubuntu后需要先更新软件源: apt-get update 就ok了 参考自:https://blog.csdn.net/BobYuan888/article/details/80874075

Python一行代码给儿子制作九九乘法表

一行代码实现九九乘法表print(\n.join( .join([%sX%s%s%(j,i,i*j) for j in range(1,i1)]) for i in range(1,10)))1X11 1X22 2X24 1X33 2X36 3X39 1X44 2X48 3X412 4X416 1X55 2X510 3X515 4X520 5X525 1X66 2X612 3X618 4X624 5X630 6X636 1X77 2X714 3X721 4X728 5X735 6X74…