在做系统设计时,架构师希望建立一套高性能的系统,而吞吐量(TPS)则作为衡量系统性能的重要指标。在做性能测试的时候,测试人员需要了解系统并发用户数、系统吞吐量、以及响应时间等,下面就按照这几者之间的关系简单整理如下。
1、响应时间:对请求作出响应所需要的时间
网络传输时间:N1 + N2 + N3 + N4
应用服务器处理时间:A1 + A3
数据库服务器处理时间:A2
则响应时间 = N1 + N2 + N3 + N4 + A1 + A3 + A2
2、并发用户数的计算公式
系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是3000个,那么这个数量,就是系统用户数。
同时在线用户数:在一定的时间范围内,最大的同时在线用户数量。
同时在线用户数 = 每秒请求数RPS(吞吐量TPS) + 并发连接数 + 平均用户思考时间
平均并发用户数的计算:C = n * L / T
其中C是平均的并发用户数,n是平均每天访问用户数(login session),L是一天内用户从登录到退出的平均时间(login session的平均时间),T是考察时间长度(一天内多长时间有用户使用系统)
并发用户数峰值计算:C1 = C + 3 * sqr(C)
其中C1是并发用户峰值,C是平均并发用户数,sqr(C)代表C的平方根。
示例:
假设有一个OA系统,该系统有3000个用户,平均每天大约有400个用户要访问该系统,对一个典型用户来说,一天之内用户从登录到退出该系统的平均时间为4个小时,在一天的时间内,用户只在8小时内使用该系统。
则根据公式1和公式2,可以得到:
C = 400 * 4 / 8 = 200
C1 = 200 + 3 * sqr(200) = 242
3、吞吐量的计算公式
吞吐量:指单位时间内系统处理用户的请求数
从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看,吞吐量可以用:字节/秒来衡量
一个系统的吞度量(承压能力)与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
Vu和TPS换算举例说明
TPS是每秒事务数,但是事务是要靠虚拟用户run出来的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1;如果某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了;如果某笔业务响应时间是1s,那么1个用户在1秒内只能完成1笔事务,要想达到1000的TPS,至少需要1000个用户;因此可以说1个用户可以产生1000TPS,1000个用户也可以产生1000TPS,主要是看响应时间快慢。
4、如何获取Vu和TPS
并发用户数(Vu)获取
新系统:没有历史数据作参考,只能通过业务部门进行评估。
旧系统:对于已经上线的系统,可以选取高峰时刻,在一定时间内使用系统的人数,这些人数认为属于在线用户数,并发用户数取10%就可以了,例如在半个小时内,使用系统的用户数为10000,那么取10%作为并发用户数基本就够了。
吞吐量(TPS)获取
新系统:没有历史数据作参考,只能通过业务部门进行评估。
旧系统:对于已经上线的系统,可以选取高峰时刻,在5分钟或10分钟内,获取系统每笔交易的业务量和总业务量,按照单位时间内完成的笔数计算出TPS,即业务笔数/单位时间(5*60或10*60)
因此对于大型系统、业务量非常高、硬件配置足够多的情况下,5000用户并发就足够了;对于中小型系统,1000用户并发就足够了。
5、TPS与硬件、网络配置
基准参数
平均响应时间1S
TPS峰值242
页面平均大小20KB
每页平均包含20张图片,每张图片平均大小50KB
PV估算
平均一天8个小时工作时间都按峰值估算,TPS * 8 * 60 * 60 = 6969600
数据库估算
假设每个页面平均执行3个SQL,每个SQL平均耗时100毫秒,数据库需要的并发数为3 * 242 / 0.1S = 73
带宽估算
应用服务器带宽,页面平均大小20KB,平均响应时间1S,去除数据库的交互时间(1000ms - 3 * 100ms)后为700ms,平均每个requst带宽是28.57KB/S,最大带宽242 * 28.57 / 1024 = 6.75MB/S
图片服务器带宽估算类似应用服务器
CPU估算、内存估算
对于每天1千万PV(并发100用户)网站的解决方案:
处理器:8核 内存:16G 带宽:50Mbps
数据库内存:16G
----------------------------------------------------------------------------------------------------------------------
每秒查询率QPS:对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,即每秒请求数,即最大谈吐能力。
并发数:并发数和QPS是不同的概念,一般说QPS会说多少并发用户下QPS,当QPS相同时,并发用户数越大,网站并发处理能力越好。当并发用户数过大时,会造成进程(线程)频繁切换,反正真正用于处理请求的时间变少,每秒能够处理的请求数反而变少,同时用户的请求等待时间也会变大。 找到最佳线程数能够让web系统更稳定,效率更高。
通过QPS和pv计算部署服务器台数:
单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8
服务器计算
服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )
峰值QPS和机器计算公式
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3