zoukankan      html  css  js  c++  java
  • 【转载】QPS,用户平均等待时间,服务器平均请求处理时间

    转自:http://www.cnblogs.com/coldplayerest/archive/2012/06/28/2567656.html

    1. 计算网络的QPS时,必须要指定并发度,否则没有意义。

    2. 等式关系:

    • QPS = 并发度 / 用户平均等待时间
    • QPS = 1 / 服务器平均请求处理时间
    • 用户平均等待时间 / 并发度 = 服务器平均请求处理时间

    3. QPS是指在一定并发度下,服务器每秒可以处理多少请求。这是从服务器的角度来说的,而不是从每个用户的角度再乘以并发度来说的。

    4. Apache AB的两个翻译:

      Time per Request:用户平均等待时间

      Time per Request (across all concurrent request): 服务器平均请求处理时间

    转自:http://jinguoxing.github.io/2016/01/10/server-concurrent-processing/

    吞吐率是指单位时间内服务器处理的请求数据来描述其并发处理能力,单位是 reqs/s。脱离了并发度的吞吐量是没有意义的。

    我们更关心的是服务器并发处理能力的上限,也就是单位时间内服务器能够处理的最大请求数,即最大吞吐率。

    “压力测试” 通过模拟足够数目的并发用户数,分别持续发送一定的HTTP请求数,并统计测试持续的总时间,计算出基于这种“压力”下的吞吐率,即为一个平均值。

    压力描述一般包括两部分,即并发用户数和总请求数。也就是模拟多少个用户同时向服务器发送多少个请求。
    
    并发用户数 就是指定某一时刻同时向服务器发送请求的用户总数。
    

    请求等待时间

    1. 用户平均请求等待时间: 主要衡量服务器在一定并发用户数的情况下,对于单个用户的服务质量

    2. 服务器平均请求处理时间: 衡量服务器的整体服务质量,它其实就是吞吐率的倒数

    概念解释

    请求等待时间:
    用户平均请求等待时间:单个用户的服务质量,从请求发送到数据显示花费的时间。当多个请求同时抵达服务器时,往往采用多进程或者进程并发处理,则每个执行的时间被拉长。
    服务器平均请求处理时间:吞吐率的倒数,不考虑多单个用户请求等待时间下用以衡量整体服务质量的参数。

    特别推荐:http://blog.sina.com.cn/s/blog_7139a34c0100yb9r.html

    关于并发用户数和QPS,自己一直被这两个概念纠结,阅读了一下相关资料,总结如下:并发用户数和QPS两个概念没有直接关系,但是如果要说QPS时,一定需要指明是多少并发用户数下的QPS,否则豪无意义,因为单用户数的40QPS和20并发用户数下的40QPS是两个不同的概念。前者说明该应用可以在一秒内串行执行40个请求,而后者说明在并发20个请求的情况下,一秒内该应用能处理40 个请求当QPS相同时,越大的并发用户数,代表了网站并发处理能力越好

    对于当前的web服务器,其处理单个用户的请求肯定戳戳有余,这个时候会存在资源浪费的情况(一方面该服务器可能有多个cpu,但是只处理单个进程,另一方面,在处理一个进程中,有些阶段可能是IO阶段,这个时候会造成CPU等待,但是有没有其他请求进程可以被处理)。

    但是,当并发数设置的过大时,每秒钟都会有很多请求需要处理,会造成进程(线程)频繁切换,反正真正用于处理请求的时间变少每秒能够处理的请求数反而变少,同时用户的请求等待时间也会变大,甚至超过用户的心理底线。所以在最小并发数和最大并发数之间,一定有一个最合适的并发数值,在合适的并发数下,QPS能够达到最大。但是,这个并发并非是一个最佳的并发,因为当QPS到达最大时的并发,可能已经造成用户的等待时间变得超过了其最优值,所以对 于一个系统,其最佳的并发数,一定需要结合QPS,用户的等待时间来综合确定。

     
        对这个图进行简单的讲评吧。横坐标是并发用户数。绿线是CPU使用率;紫线是吞吐量,即QPS;蓝线是时延。
        开始,系统只有一个用户,CPU工作肯定是不饱合的。一方面该服务器可能有多个cpu,但是只处理单个进程,另一方面,在处理一个进程中,有些阶段可能是IO阶段,这个时候会造成CPU等待,但是有没有其他请 求进程可以被处理)。随着并发用户数的增加,CPU利用率上升,QPS相应也增加(公式为QPS=并发用户数/平均响应时间。)随着并发用户数的增加,平均响应时间也在增加,而且平均响应时间的增加是一个指数增加曲线。而当并发数增加到很大时,每秒钟都会有很多请求需要处理,会造成进程(线程)频繁切换,反正真正用于处理请求的时间变少,每秒能够处 理的请求数反而变少,同时用户的请求等待时间也会变大,甚至超过用户的心理底线。

      系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

               QPS(TPS):     每秒钟request/事务 数量

               并发数:          系统同时处理的request/事务数

               响应时间:      一般取平均响应时间,这里是指用户等待时间(即请求从客户端发送给服务器开始,到服务器响应返回给客户端为止)

          (很多人经常会把并发数和TPS理解混淆)

      理解了上面三个要素的意义之后,就能推算出它们之间的关系:

          QPS(TPS)= 并发数/平均响应时间

        一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

        上面这张图是应用其他人的关于并发用户数,QPS,用户平均等待时间的一张关系图,对于实际的系统,也应该是对于不同的并发数,进行多次测试,获取到这些数值后,画出这样一张图出来,以便于分析出系统的最佳并发用户数。
  • 相关阅读:
    这一段
    转安装vs2003 提示重启
    转解决VSS中Access to file "rights.dat" denied的错误
    C# 页面基类
    C#密码加密
    转 如何改变*.sln文件的路径
    后台为按钮定义js事件
    sql2005 数据库还原
    vss 代码管理器
    转 如何有效的使用C#读取文件 及如何解决中文乱码问题
  • 原文地址:https://www.cnblogs.com/pengyusong/p/5740151.html
Copyright © 2011-2022 走看看