zoukankan      html  css  js  c++  java
  • 系统设计 并发用户数与吞吐量

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

  • 相关阅读:
    委托事件
    委托使用(2)
    简单的文件流写读
    datalist 分页显示不用PagedDataSource对象
    委托使用(1)
    文件的路径问题
    委托揭秘
    一个简单的文件上传(没有数据库的)
    Quartz 2D 练习2多点触摸画圈
    插件框架精简版 x3py 已在Win/Mac/Linux下测试通过
  • 原文地址:https://www.cnblogs.com/feong/p/5164018.html
Copyright © 2011-2022 走看看