系统设计 -- 并发用户数与吞吐量

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值