系统吞吐量(TPS)、用户并发量、性能测试概念和公式
发表于: DataBase, Linux, UNIX, 个人日记 | 作者: 博客教主
PS:下面是性能测试的主要概念和计算公式,记录下:
一.系统吞度量要素:
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟request/事务 数量
并发数: 系统同时处理的request/事务数
响应时间: 一般取平均响应时间
(很多人经常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间
一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
决定系统响应时间要素
我们做项目要排计划,可以多人同时并发做多项任务,也可以一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。
系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统影响时间;
关键路径是有CPU运算、IO、外部系统响应等等组成。
二.系统吞吐量评估:
我们在做系统设计的时候就需要考虑CPU运算、IO、外部系统响应因素造成的影响以及对系统性能的初步预估。
而通常境况下,我们面对需求,我们评估出来的出来QPS、并发数之外,还有另外一个维度:日PV。
通过观察系统的访问日志发现,在用户量很大的情况下,各个时间周期内的同一时间段的访问流量几乎一样。比如工作日的每天早上。只要能拿到日流量图和QPS我们就可以推算日流量。
通常的技术方法:
1. 找出系统的最高TPS和日PV,这两个要素有相对比较稳定的关系(除了放假、季节性因素影响之外)
2. 通过压力测试或者经验预估,得出最高TPS,然后跟进1的关系,计算出系统最高的日吞吐量。B2B中文和淘宝面对的客户群不一样,这两个客户群的网络行为不应用,他们之间的TPS和PV关系比例也不一样。
A)淘宝
淘宝流量图:
淘宝的TPS和PV之间的关系通常为 最高TPS:PV大约为 1 : 11*3600 (相当于按最高TPS访问11个小时,这个是商品详情的场景,不同的应用场景会有一些不同)
B) B2B中文站
B2B的TPS和PV之间的关系不同的系统不同的应用场景比例变化比较大,粗略估计在1 : 8个小时左右的关系(09年对offerdetail的流量分析数据)。旺铺和offerdetail这两个比例相差很大,可能是因为爬虫暂的比例较高的原因导致。
在淘宝环境下,假设我们压力测试出的TPS为100,那么这个系统的日吞吐量=100*11*3600=396万
这个是在简单(单一url)的情况下,有些页面,一个页面有多个request,系统的实际吞吐量还要小。
无论有无思考时间(T_think),测试所得的TPS值和并发虚拟用户数(U_concurrent)、Loadrunner读取的交易响应时间(T_response)之间有以下关系(稳定运行情况下):
TPS=U_concurrent / (T_response+T_think)。
并发数、QPS、平均响应时间三者之间关系
来源:http://www.cnblogs.com/jackei/
软件性能测试的基本概念和计算公式
一、软件性能的关注点
对一个软件做性能测试时需要关注那些性能呢?
我们想想在软件设计、部署、使用、维护中一共有哪些角色的参与,然后再考虑这些角色各自关注的性能点是什么,作为一个软件性能测试工程师,我们又该关注什么?
首先,开发软件的目的是为了让用户使用,我们先站在用户的角度分析一下,用户需要关注哪些性能。
对于用户来说,当点击一个按钮、链接或发出一条指令开始,到系统把结果已用户感知的形式展现出来为止,这个过程所消耗的时间是用户对这个软件性能的直观印象。也就是我们所说的响应时间,当相应时间较小时,用户体验是很好的,当然用户体验的响应时间包括个人主观因素和客观响应时间,在设计软件时,我们就需要考虑到如何更好地结合这两部分达到用户最佳的体验。如:用户在大数据量查询时,我们可以将先提取出来的数据展示给用户,在用户看的过程中继续进行数据检索,这时用户并不知道我们后台在做什么。
用户关注的是用户操作的相应时间。
其次,我们站在管理员的角度考虑需要关注的性能点。
1、 相应时间
2、 服务器资源使用情况是否合理
3、 应用服务器和数据库资源使用是否合理
4、 系统能否实现扩展
5、 系统最多支持多少用户访问、系统最大业务处理量是多少
6、 系统性能可能存在的瓶颈在哪里
7、 更换那些设备可以提高性能
8、 系统能否支持7×24小时的业务访问
再次,站在开发(设计)人员角度去考虑。
1、 架构设计是否合理
2、 数据库设计是否合理
3、 代码是否存在性能方面的问题
4、 系统中是否有不合理的内存使用方式
5、 系统中是否存在不合理的线程同步方式
6、 系统中是否存在不合理的资源竞争
那么站在性能测试工程师的角度,我们要关注什么呢?
一句话,我们要关注以上所有的性能点。
二、软件性能的几个主要术语
1、响应时间:对请求作出响应所需要的时间
网络传输时间:N1+N2+N3+N4
应用服务器处理时间:A1+A3
数据库服务器处理时间:A2
响应时间=N1+N2+N3+N4+A1+A3+A2
2、并发用户数的计算公式
系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是5000个,那么这个数量,就是系统用户数。
同时在线用户数:在一定的时间范围内,最大的同时在线用户数量。
同时在线用户数=每秒请求数RPS(吞吐量)+并发连接数+平均用户思考时间
平均并发用户数的计算:C=nL / T
其中C是平均的并发用户数,n是平均每天访问用户数(login session),L是一天内用户从登录到退出的平均时间(login session的平均时间),T是考察时间长度(一天内多长时间有用户使用系统)
并发用户数峰值计算:C^约等于C + 3*根号C
其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。
3、吞吐量的计算公式
指单位时间内系统处理用户的请求数
从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看,吞吐量可以用:字节/秒来衡量
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力
以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。
当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU * R /
其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间
4、性能计数器
是描述服务器或操作系统性能的一些数据指标,如使用内存数、进程时间,在性能测试中发挥着“监控和分析”的作用,尤其是在分析统统可扩展性、进行新能瓶颈定位时有着非常关键的作用。
资源利用率:指系统各种资源的使用情况,如cpu占用率为68%,内存占用率为55%,一般使用“资源实际使用/总的资源可用量”形成资源利用率。
5、思考时间的计算公式
Think Time,从业务角度来看,这个时间指用户进行操作时每个请求之间的时间间隔,而在做新能测试时,为了模拟这样的时间间隔,引入了思考时间这个概念,来更加真实的模拟用户的操作。
在吞吐量这个公式中F=VU * R / T说明吞吐量F是VU数量、每个用户发出的请求数R和时间T的函数,而其中的R又可以用时间T和用户思考时间TS来计算:R = T / TS
下面给出一个计算思考时间的一般步骤:
A、首先计算出系统的并发用户数
C=nL / T F=R×C
B、统计出系统平均的吞吐量
F=VU * R / T R×C = VU * R / T
C、统计出平均每个用户发出的请求数量
R=u*C*T/VU
D、根据公式计算出思考时间
TS=T/R
永久链接 : http://www.ha97.com/5095.html
本文相关评论 - 才 13 条评论
RSS for this comments | Trackback URI
Dylan
2013-01-05 23:38:11
Google Chrome 23.0.1271.95
Windows 7
关于你上面描述的
“ 并发数: 系统同时处理的request/事务数”
我觉得这也是很模糊的 所谓“同时处理的” 也应该有个单位时间啊 或者是平均值
对于 “并发 PV QPS 吞吐量”等等描述和换算 网上有很多的说法
2013-05-31 15:19:14
Google Chrome 27.0.1453.94
Windows 7 x64 Edition
写的挺全面,了解了不少
菠萝大师
2013-10-21 16:50:30
Google Chrome 30.0.1599.101
Windows 7 x64 Edition
同时在线用户数=每秒请求数RPS(吞吐量)+并发连接数+平均用户思考时间
这个公式怎么看着这么蹊跷呢?是不是什么地方错了?能否给解释一下。
ck
2013-10-23 21:41:15
Google Chrome 30.0.1599.101
Windows 7 x64 Edition
同时在线用户数=每秒请求数RPS(吞吐量)+并发连接数/平均用户思考时间
应该是这样吧?
Microsoft
2015-03-30 17:58:25
IBrowse r
Windows 7 x64 Edition
TPS和并发数关系应该有问题吧。 按照QPS(TPS)= 并发数/平均响应时间公式, 并发数成了单位时间内处理的request数,并没有区分是并行处理还是串行处理。
正确的应该为:并发数:同一时间能够处理的线程数N. 假设每条线程单位时间(秒)处理的request平均是m, 则 TPS=N*m。 即TPS本质上由线程并发数和,线程处理效率决定
ss
2015-04-29 09:31:18
Google Chrome 41.0.2272.118
Windows 7 x64 Edition
写的不错
Henry
2016-05-11 11:46:28
Google Chrome 49.0.2623.110
Windows 10 x64 Edition
写的不错
Smox
2016-05-18 19:13:23
Google Chrome 45.0.2454.101
Windows 7 x64 Edition
深入浅出
2016-07-01 14:52:32
Safari 9.1.1
Mac OS X 10.11.5
写的不错
小米粥
2017-01-12 19:04:03
Firefox 50.0
Windows 7 x64 Edition
楼主写的不错,我们boss让我接手接口 性能测试,能给点指点?谢谢 我以前做的是功能测试 4个多月经验
2017-02-13 13:56:44
Sogou Explorer
Windows 7 x64 Edition
写的真棒
以禾
2017-04-21 11:00:47
Google Chrome 57.0.2987.98
Windows 10 x64 Edition
在很多地方都看到这篇文章了,这里应该就是原出处吧
爱神的箭
2018-03-19 15:57:22
Google Chrome 58.0.3029.96
Windows 7 x64 Edition
总结的很到位
昵称 *
电子邮件 *
网站/博客
(原创)SUSE Linux 11里Nginx+Resin+JSP+Memcached+MySQL安装配置整合 »
-
站内搜索
-
页面
-
近期文章
- 机器学习速查表全集(从理论概念到Python库)
- AI人工智能专业词汇集
- 温铁军:中国为何每次逢大危机总能力挽狂澜?
- 推荐给初学者的机器学习算法(速查表)
- (总结)Fedora 22跨版本升级到Fedora 24方法
- (原创)机器学习开源框架Mahout配置与入门研究
- 大数据架构师技能图谱
- 主流大数据采集平台的架构图解
- 主流大数据厂商汇总分类
- JDBC URL连接常用数据库格式
- 云计算十年:OpenStack如何成为开源IaaS的老大
- GitHub最流行的机器学习开源项目28个:TensorFlow居首
- 2016年OpenStack & Docker六大趋势预测
- (总结)Hadoop 2.6报错解决:Could not find the main class: org.apache.hadoop.hdfs.server.namenode.NameNode.
- odoo 8.0 VS odoo 9.0社区版&企业版功能对比
- (总结)CentOS 7.x里yum安装Odoo 8.0&9.0(OpenERP)
- (总结)CentOS 7 里使用自动化运维工具Ansible
- (分享)GitHub上排名TOP100的Python项目
- 阿里蚂蚁金服的关系型数据库:OceanBase架构详解
- SAP与OpenERP(Odoo)两大ERP系统比较
-
近期评论
- q77190858发表在《(总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)》
- archlong发表在《(原创)Linux下查看系统版本号信息的方法》
- yinuo发表在《一些不错的网站入侵渗透教程》
- jerm发表在《Sun被Oracle收购两年后》
- 哇塞发表在《Sun被Oracle收购两年后》
- fromar发表在《Sun被Oracle收购两年后》
- 几个性能测试工具 - Kellen_劉发表在《(总结)Web性能压力测试工具之WebBench详解》
- 长风大侠发表在《Google Chrome Source Code 浏览器源码(下载)》
- 爱神的箭发表在《系统吞吐量(TPS)、用户并发量、性能测试概念和公式》
- guang发表在《《Linux命令详解词典》PDF电子版》
-
标签
2010 Apache centos Chrome Debian Google Linux mysql Nginx oracle PHP RedHat RHEL server Shell Web Windows WordPress XenServer yum 下载 中国 互联网 优化 全球 原创 参数 命令 安装 工具 常用 开源 总结 数据库 方法 服务器 架构 简介 系统 经典 脚本 腾讯 解决方法 详解 配置
-
博文浏览排名
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式 - 431,845 views
- (总结)Nginx配置文件nginx.conf中文详解 - 319,592 views
- (原创)Linux下查看系统版本号信息的方法 - 169,182 views
- (总结)CentOS Linux下VNC Server远程桌面配置详解 - 145,116 views
- 《新三国》高清版全95集迅雷下载 - 110,854 views
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解 - 106,908 views
- (总结)CentOS Linux搭建SVN Server配置详解 - 104,354 views
- (总结)Linux下su与su -命令的本质区别 - 91,242 views
- (总结)Web性能压力测试工具之ApacheBench(ab)详解 - 89,160 views
- (总结)Linux的chattr与lsattr命令详解 - 87,072 views
- Linux抓包工具tcpdump详解 - 75,994 views
- (原创)Oracle 9i所有版本的最新下载地址(已验证!) - 74,834 views
- (总结)Oracle启动监听报错:The listener supports no services解决 - 68,313 views
- (原创)Linux文件系统只读Read-only file system的快速解决方法 - 57,765 views
- Linux的IO性能监控工具iostat详解 - 57,652 views
- RedHat Enterprise Linux (RHEL) 6正式版发布下载(很快) - 57,206 views
- 最流行最好玩的十大经典单机游戏排行榜 - 56,112 views
- (总结)Web性能压力测试工具之WebBench详解 - 54,580 views
- (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载) - 53,274 views
- (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题) - 51,062 views
-
分类目录
- DataBase (70)
- ERP (4)
- Google (55)
- IT精英 (32)
- Linux (424)
- Security (112)
- SEO (22)
- Tools (74)
- UNIX (147)
- VPS (14)
- Web (155)
- Web Server (77)
- WordPress (39)
- 个人日记 (323)
- 互联网 (221)
- 人工智能 (2)
- 人文历史 (57)
- 人生百态 (93)
- 创业投资 (76)
- 原创总结 (138)
- 外文翻译 (77)
- 大数据应用 (16)
- Hadoop (15)
- 开源世界 (47)
- 旧文存档 (199)
- 服务器架构 (84)
- 未分类 (24)
- 机器学习 (5)
- 游戏研究 (45)
- 科技资讯 (52)
- 编程开发 (131)
- 虚拟化与云计算 (46)
- 资源分享 (128)
- 运维经验 (39)
- 集群与负载均衡 (18)
- 项目管理 (9)
-
功能
-
文章归档
- 2017年七月 (3)
- 2017年五月 (1)
- 2016年八月 (1)
- 2016年七月 (1)
- 2016年六月 (1)
- 2016年五月 (5)
- 2016年一月 (1)
- 2015年十一月 (1)
- 2015年十月 (1)
- 2015年八月 (1)
- 2015年七月 (3)
- 2015年六月 (1)
- 2015年二月 (2)
- 2014年九月 (3)
- 2014年八月 (4)
- 2014年七月 (6)
- 2014年六月 (2)
- 2014年五月 (6)
- 2014年四月 (1)
- 2013年十月 (2)
- 2013年九月 (5)
- 2013年七月 (1)
- 2013年六月 (1)
- 2013年三月 (2)
- 2013年二月 (1)
- 2013年一月 (12)
- 2012年十二月 (5)
- 2012年十一月 (10)
- 2012年十月 (2)
- 2012年九月 (5)
- 2012年八月 (12)
- 2012年七月 (21)
- 2012年六月 (23)
- 2012年五月 (21)
- 2012年四月 (7)
- 2012年三月 (2)
- 2012年二月 (1)
- 2012年一月 (2)
- 2011年十二月 (7)
- 2011年十一月 (6)
- 2011年十月 (5)
- 2011年八月 (3)
- 2011年七月 (29)
- 2011年六月 (24)
- 2011年五月 (37)
- 2011年四月 (28)
- 2011年三月 (18)
- 2011年二月 (1)
- 2011年一月 (14)
- 2010年十二月 (3)
- 2010年十一月 (17)
- 2010年十月 (24)
- 2010年九月 (100)
- 2010年八月 (119)
- 2010年七月 (184)
- 2010年六月 (157)
- 2010年五月 (154)
- 2010年四月 (42)
-
日历
2018年八月 一 二 三 四 五 六 日 « 7月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -
常用网站
-
技术blog
-
技术手册