每秒事务数,这里的会话数是指请求-&gt

作者: 编程  发布:2019-10-04

一、什么是高并发

私以为并发数与吞吐量是正相关的,并发数高,吞吐量必然高,何必多此一举?

TPS(Transactions Per Second):每秒事务数

1、响应时间

响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。

对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。对于一个游戏软件来说,响应时间小于100毫秒应该是不错的,响应时间在1秒左右可能属于勉强可以接受,如果响应时间达到3秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。

定义:

并发数、吞吐量的概念最初用来衡量网络设备的性能,后来推广到服务器及业务上评估系统的整体性能。

QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求。

2、吞吐量(Throughput)

吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。

对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。这是因为处理每个请求需要用到很多资源,由于每个请求的处理过程中有许多不走难以并发执行,这导致在具体的一个时间点,所占资源往往并不多。也就是说在处理单个请求时,在每个时间点都可能有许多资源被闲置,当处理多个请求时,如果资源配置合理,每个用户看到的平均响应时间并不随用户数的增加而线性增加。实际上,不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。

高并发(High Concurrency)是使用技术手段使系统可以并行处理很多请求。

一、网络设备的并发数、吞吐量

并发数:并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

3、并发用户数

并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。

关键指标:

并发数(Concurrency):

峰值QPS

4、QPS 每秒查询率(Query Per Second)

每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 (看来是类似于TPS,只是应用于特定场景的吞吐量)

-响应时间(Response Time)

也叫并发连接数,指网络设备所能处理的最大会话数量。这里的会话数是指请求->响应一次会话。

  • 原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
  • 公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
5、TPS 每秒传输的事物处理个数(Transactions Per Second)

每秒传输的事物处理个数,即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。

网上流传比较广的计算公式,可以参考一下。

-吞吐量(Throughput)

吞吐量(Throughput):

PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次

QPS:

每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力。

QPS = req/sec = 请求数/秒

QPS统计方式 [一般使用 http_load 进行统计]

QPS = 总请求数 / ( 进程总数 * 请求时间 )

QPS: 单个进程每秒请求服务器的成功次数

-每秒查询率QPS(Query Per Second)

用户请求是由一个个数据包组成,网络设备(防火墙/路由器/交换机)对每个数据包的处理要耗费资源。吞吐量是指在不丢包的情况下单位时间内通过网络设备的数据包数量。

UV(Unique Visitor):独立访客,统计1天内访问某站点的用户数(以cookie为依据)

峰值QPS:

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间

公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数

-每秒事务处理量TPS(Transaction Per Second)

网络层面并发数和吞吐量的关系:

吐吞量:吞吐量是指系统在单位时间内处理请求的数量

PV:

访问量即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次

单台服务器每天PV计算

公式1:每天总PV = QPS * 3600 * 6

公式2:每天总PV = QPS * 3600 * 8

-同时在线用户数量

并发数x包长度=吞吐量

响应时间(RT):响应时间是指系统对请求作出响应的时间,一般取平均响应时间

UV:

独立访客即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次

服务器数量:

机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

机器:ceil( 每天总PV / 单台服务器每天总PV )

关键指标的维度:

参考:吞吐与并发关系

 

并发数:

并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量

-平均,如:小时平均、日平均、月平均

可以看出,在网络层面考察吞吐量,除了并发数,还要考虑请求包的大小(长度)。用于度量网络设备时候,可以用byte/秒。

QPS(每秒查询数)、TPS(每秒事务数)是吞吐量的常用量化指标,另外还有HPS(每秒HTTP请求数)。

吐吞量:

吞吐量是指系统在单位时间内处理请求的数量

-Top百分数TP(Top Percentile),如:TP50、TP90、TP99、TP4个9

二、服务器及业务上的并发数、吞吐量

QPS(TPS)、并发数、响应时间它们三者之间的关系是:

响应时间:

响应时间是指系统对请求作出响应的时间

例子:

每天300w PV 的在单台机器上,这台机器需要多少QPS?

答:( 3000000 0.8 ) / (86400 * 0.2 ) = 139*

如果一台机器的QPS是58,需要几台机器来支持?

答:139 / 58 = 3

-最大值

用于指网站性能/服务器性能时候:

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

-趋势

并发数:系统同时处理的请求数(分为查询类请求数、事务类请求数)。

 

「并发」由于在互联网架构中,已经从机器维度上升到了系统架构层面,所以和「并行」已经没有清晰的界限。「并」是其中的关键。由于「同时」会引发多久才叫同时的问题,将时间扩大,又根据不同业务关注点不同,引申出了引申指标。

吞吐量:系统在单位时间内处理请求的数量。只不过是一个很宽泛的术语,大家经常指的吞吐量的单位可能是:TPS/QPS、页面数/秒、人数/天、处理业务数/小时等等。

举例说明:

引申指标:

几个相关的概念:TPS、QPS、RPS

例1:

-活跃用户数,如:日活DAU(Daily Active User)、月活MAU(Monthly Active Users)

TPS:Transactions Per Second(每秒事务处理数),指服务器每秒处理的事务次数。一般用于评估数据库、交易系统的基准性能。

  假设1秒钟100个请求,处理每个请求需要花2秒,

-点击量PV(Page View)

QPS:Queries Per Second(查询量/秒),是服务器每秒能够处理的查询次数,例如域名服务器、Mysql查询性能。

  那么  50(每秒可以处理50个请求,即QPS使50) = 100(每秒并发数) /  2 (每个请求的平均处理时间) 

-访问某站点的用户数UV(Unique Visitor)

RPS:Request Per Second(请求数/秒)

  这是一台机器的QPS,如有每秒并发数为1000,那么就需要10台这样的机器才扛得住:

-独立IP数IP(Internet Protocol)

RPS(Request Per Second)和QPS可以认为是一回事。

例2:

-日单量

RT:Response Time(响应时间):客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。也叫Think Time。

  每天200万PV,那么它的QPS = (2000000 * 0.8)/ (24*60*60*0.2)≈ 93

二、多大算高并发

并发数与TPS/QPS的关系:

  假设按照上面那样一台机器的QPS是50,那么抗住每天200万PV的访问量需要2台这样的机器

这个问题的答案不是一个数字。来看两个场景:

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

 

场景1:

这里的并发数如果为事务处理请求数,则为TPS,如果为查询请求数,则为QPS。

性能测试工具:

木头同学去一家创业公司面试。这个公司做的产品还没有上线,面试官小熊之前就职过公司的产品都没有什么量。

参考:http://www.ha97.com/5095.html

  • apache ab
  • http_load

小熊:“有高并发经验吗?”

回到题主的问题:并发数高,吞吐量是否必然高?

关于Nginx访问量统计:

木头:“我们服务单机QPS2000+,线上有4台机器负载均衡。”

个人觉得不一定。

 

这时候小熊心里的表情大概是:

如果谈的是网络设备,参照:并发数x包长度=吞吐量,吞吐量依赖于并发数和包长度。

 

图片 1

如果谈的是服务器及完整整体性能,需要明确吞吐量的度量指标,假定以吞吐量以QPS作为度量指标,如果并发数高,但平均响应时间上不去,则QPS并不一定高。

但是如果小熊就职的公司是美团之类的。那这这时候小熊心里的表情大概是:

作者:梁川

图片 2

链接:

场景2:

来源:知乎

固态硬盘SSD(Solid State Disk)说:我读取和写入高达 1000MB/秒

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

mysql说:我单机TPS10000+

nginx说:我单机QPS10W+

静儿说:给我一台56核200G高配物理机,我可以创建一个单机QPS1000W

图片 3

不在同一维度,没有任何前提,无法比较谁更牛。“我的系统算不算高并发?”这个问题就如同一个女孩子爱问的问题:“我美不美?”

三、高并发的本质

俗话说:「没有对比就没有伤害」。算不算高并发,这个问题的答案需要加对比和前提。

对比包括:

-业界:在业界同类产品中并发量处于什么位置。举个栗子

本文由9159.com发布于编程,转载请注明出处:每秒事务数,这里的会话数是指请求-&gt

关键词:

上一篇:没有了
下一篇:没有了