在做系统设计时,架构师希望建立一套高性能的系统,而吞吐量(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