欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

吞吐量概念

最编程 2024-07-31 09:33:23
...

    一个系统的吞度量(承压能力)与一个请求request对CPU的消耗、外部接口、IO等密切关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

    一般系统吞吐量由几个重要关键要素组成:

  • QPS:Queries Per Second 每秒内的查询率。它是指一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。QPS统计方式,一般使用http_load 进行统计。
  • TPS:TransactionsPerSecond 每秒内的事务数。一个事务是指一个客户机向服务器发送请求然后等待服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,客户机使用加权协函数平均方法来计算得分,最终利用这些信息得出服务器端的整体TPS得分。
  • 日PV:PV是Page View 访问量的意思,日PV是指日均页面浏览量。PV高不一定代表来访者多,PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量。UV(Unique Visitor 独立访客)是指不同的、通过互联网访问、浏览一个网页的自然人。IP是反映网络虚拟地址对象的概念,UV是反映实际使用者的概念,每个独立用户相对于每个IP更加准确地对应一个实际的浏览者。使用独立用户作为统计量,可以更准确的了解单位时间内实际上有多少个访问者来到了相应的页面。
  • 并发数: 系统同时处理的request/事务数。
  • 响应时间:  系统平均响应时间。

    他们之间的关系是怎样呢?

    QPS=并发数/平均响应时间=总请求数/(进程总数*平均响应时间),表示单个进程每秒请求服务器的成功次数;每日总PV=QPS*3600*8。

    我们简单的联想一下,一个上班签到系统,8点上班,7点半开门,公司员工总数为1000,员工签到用时平均为20秒。那么,按照上面的公式计算:QPS = 1000/(30*60)=0.56,并发数=QPS*平均响应时间=1000/(30*60)*20=11.11

 

    一个系统的吞吐量通常由QPS、TPS、并发数三个因素决定,它们都有一个相对的极限值,在应用场景访问压力下,只要某一项达到极限值,系统的吞吐量就上不去了。并发数、QPS、平均响应时间三者之间关系:

                          系统吞吐量评估方法

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