【转】Eric's并发用户数估算与Little定律的等价性

转自:http://www.cnblogs.com/hundredsofyears/p/3360305.html

在国内性能测试的领域有一篇几乎被奉为大牛之作的经典文章,一个名叫Eric Man Wong 于2004年发表了名为《Method for Estimating the Number of Concurrent Users》,里面介绍了一种对系统并发用户数估算的公式,并较为详细的阐述了过程以及证明方法。这个公式使用非常简单,很多性能测试工程师都在自己的项目中使用或者打算尝试使用,以至于在不分场合以及不具体分析系统用户行为的情况下使用。本文不打算深入探讨该公式的适用范围,我会在以后的文章中探讨这个问题。

我并不否定该公式在文章中作者指定条件下的正确性,它在一定程度上帮助我从另外一种思路考虑系统的性能模型,同时通过对性能工程的学习我发现该估算公式与Little定律尽然是等价的。

下面回顾下Eric是怎么得出这个公式的,根据原文的意思大概是这样:

首先我们知道在系统中占用系统资源的都是在系统正在活动的用户,也就是所谓的并发用户,对于但是并不是出于系统中的用户比如刚登出或者还没来得及登入的用户是不会消耗系统资源的,所以当我们想测量系统的容量时,这部分用户不需要考虑,可以只考虑当前出于系统中的活跃用户。

然后文章引入了一个login session的概念,当然这个东西是一直有的,但本文需要用到所以特别指明是它是等同于用户登出系统时与登入系统时的这段时间差,也就是session的生存周期。

文章中这个图很好的描述了系统在处理陆续到达用户时的系统某一时刻的状态,以及诠释通过计算并发用户数统计系统性能的概念或者思想。

最终得出C=nL/T.

证明过程以及后面的详述不表。

接着再来看看什么是Little定律。

说实话这个定律应该是一个最基本的,也是在很多领域中已经广泛应用的定律,但是在国内性能测试领域出现的频率却不高。

直接借用《Programing Pearls 》的翻译:

大多数的估算都遵循这样一个浅显的法则:总花费就等于每个部分的花费再乘以总的部分数。但某些时候我们还需要更深入地了解细节。俄亥俄州立大学的Bruce Weide就一条通用得出奇的规则写下如下文字。

Denning和Buzen引入的"操作分析"(参见Computing Surveys 10第3期,1978年11月,第225~261页)比计算机系统队列网络模型更加通用。他们的展示相当精彩,不过由于文章主题的限制,他们并未深入揭示Little定律的通用性。他们的证明方法与队列和计算机系统都没有关系。想象一个任意的、有某些东西进入和离开的系统。Little定律可以表述为"系统中的东西的平均数目等于这些东西离开系统的平均速度乘以每个东西离开系统所花费的平均时间"。(若系统的总体出入流是平衡的,离开速率也就是进入速率。)

在建立性能模型时,一般是常使用如下公式表述Little定律:

N=X*R

N 表示系统中同时活动的用户,包括正在处理中和队列中的

X表示用户相继到达系统的速率,在平衡状态时即为系统吞吐量(到达=离开)

R表示每个用户在系统中平均的驻留时间

也就是说系统中平均同时被服务的用户数量等于用户到达系统的速度*每个用户在系统中待的时间

这条定律非常实用也具有很广的适用性,举一个例子:

比如说,你正在排队等待进入一个很受欢迎的夜总会,你可以通过估计人们进入的速率来知道自己还要等待多长时间。应用Little定律,你可以推理:"这个地方差不多能容纳60人,平均在里面呆的时间是3个小时,所以我们以每小时20人的速度进入。而我们前面还有20个人,所以我们还要等上一个小时。

上面的例子可以用公式进一步表述:

R=3 hours

X=20 人/hour

So N=3 hours * 20 人/hour=60 人,该夜总会能同时容纳60人

大家可以比较以上两种方法和定律,他们的表述是完全不同的,计算所需要的变量也不一样,但是经过下面的case后会有让你惊奇的发现。

Case:

有一个论坛系统,每天的活跃用户有500,用户活跃时间主要集中在晚上7点到12点,平均每人登入登出一次,登陆时长为30分钟,请为该系统建立性能测试模型。

使用Eric的估算公式解:

假设系统后端维护session,那么这个session的长度即为30分钟,L=30minutes

用户活跃时长已经得知是从7点到12点共五个小时,T=5 hours

那么并发用户数C=n*L/T=500*30/(5*60)=50

同时我们也可以使用Little定律对系统并发用户数进行估算:

500个用户需要在7点到12点这段时间陆续登入论坛可知,到达率X=500/(5*60)= 5/3 个用户/分钟

登陆时长30分钟为用户在系统中的驻留时间,R=30分钟

那么系统中同时被服务也就是并发数N=X*R=5/3 *30=50

看似两种全完不同的方法计算出来的结果完全一样,是巧合吗?或者一题多解?

我们再来从另外的角度分解Eric的估算公式:

C=n*L/T  可以表示为  C=(n/T)*L

n/T 是不是和我们刚才在上面Little中第一步一样,是计算到达率X的。

而L不就是R吗?都等同于session的长度。

也就是说C=(n/T)*T=X*R=N

结论:由以上得知,Eric‘s 估算公式跟Little定律是等价的. 同时读者可以自己看看他们各自的证明过程,有一定的相似性。

我们也可以在能适用的范围内放心使用这两种估算方法,以节约资源和时间。

Reference :

http://www.ece.virginia.edu/mv/edu/715/lectures/littles-law/littles-law.pdf

http://emiraga.wikispaces.com/file/view/Littles.law.January.2009.pdf

【转】Eric's并发用户数估算与Little定律的等价性

时间: 2024-11-07 14:54:13

【转】Eric's并发用户数估算与Little定律的等价性的相关文章

系统的平均并发用户数和并发数峰值如何估算

一.经典公式1: 一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据 1)平均并发用户数为 C = nL/T 2)并发用户数峰值 C' = C + 3*根号C C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度 C'是并发用户数峰值 举例1,假设系统A,该系统有3000个用户,平均每天大概有400个用户要访问该系统(可以从系统日志从获得),对于一个典型用户来说,一天之内用户从登陆到退出的平均时间为4小时,而在一天

性能测试中TPS和并发用户数

并发用户数:是指现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User). 并发用户数和注册用户数.在线用户数的概念不同, 1.并发用户数一定会对服务器产生压力的, 2.而在线用户数只是 "挂" 在系统上,对服务器不产生压力, 3.注册用户数一般指的是数据库中存在的用户数. TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个非常重要的指标. TPS就是每秒事务数,但是事务是基于虚拟用户数的,假如1个虚拟用户在1秒

“并发用户数”、“系统用户数”和“同时在线用户数”的计算公式

与并发用户数相关的概念还包括“并发用户数”.“系统用户数”和“同时在线用户数”,下面用一个实际的例子来说明它们之间的差别.         假设有一个OA系统,该系统有2000个使用用户——这就是说,可能使用该OA系统的用户总数是2000名,这个概念就是“系统用户数”,该系统有一个“在线统计”功能(系统用一个全局变量记数所有已登录的用户),从在线统计功能中可以得到,最高峰时有500人在线(这个500就是一般所说的“同时在线人数”),那么,系统的并发用户数是多少呢?         根据我们对业务

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

在做系统设计时,架构师希望建立一套高性能的系统,而吞吐量(TPS)则作为衡量系统性能的重要指标.在做性能测试的时候,测试人员需要了解系统并发用户数.系统吞吐量.以及响应时间等,下面就按照这几者之间的关系简单整理如下. 1.响应时间:对请求作出响应所需要的时间网络传输时间:N1 + N2 + N3 + N4应用服务器处理时间:A1 + A3数据库服务器处理时间:A2则响应时间 = N1 + N2 + N3 + N4 + A1 + A3 + A2 2.并发用户数的计算公式系统用户数:系统额定的用户数

关于系统用户数,并发用户数,在线用户数,吞吐量

1.  关于系统用户数,并发用户数和在线用户数 系统用户数 侠义上来说,可以理解为系统注册用户数:广义上来说,可以理解为所有访问过系统的用户数 在线用户数 侠义上来说,可以理解为已登录系统的用户数:广义来说,可以理解为当前时间访问系统的用户数. 并发用户数 可以分两种: 1)同一时间点,执行同一(业务)操作的用户数 2)同一时间点,执行不同(业务)操作的用户数 注意:服务器实际承受的压力并不完全取决于并发用户数,详情见下面的例子. 例子(以51测试论坛为例): 作为专业软件测试论坛,会有很多测试

在线用户数与并发用户数的区别和比例关系

在线用户数:用户同时在一定时间段的在线数量 并发用户数:某一时刻同时向服务器发送请求的用户数 一般而言,我们习惯以5-20的比率来推算并发用户与在线用户之间的关系.即,并发与在线的比例约为5%-20% 比如,某网站存在注册用户数为10W人,但同时在线最多1W人,但这1W个人,可能只有500人会浏览帖子,500人会进行发帖,只有这1000个人对服务器才有交易,那我们计算并发量的时候,就可以以1000为标准! =============================================

并发用户数的理解

什么是并发用户数,很多人都会拿这个指标来衡量一个网络系统的好与坏,刚开始接触Loadrunner的时候,曾认为虚拟用户就是所谓的并发用户数,不过经过一系列的测试后,发现这种看法并不怎么全是正确.首先,要分两种测试情况,第一种是通过跑网页实际业务测试,如教务系统,观察其登陆事务,查询事务等,第二种,测试跑单个静态页面,或者动态页面,服务器所表现出来的性能.        第一种,可以设计集中点,让虚拟用户同时登陆,观察其响应事务情况,那么这个观察点,可以说是,同一时刻,并发登陆的用户数是你的虚拟用

TPS、并发用户数、吞吐量关系

TPS.并发用户数.吞吐量关系 摘要 主要描述了在性能测试中,关于TPS.并发用户数.吞吐量之间的关系和一些计算方法. loadrunner TPS 目录[-] 一.系统吞度量要素: 二.系统吞吐量评估: 软件性能测试的基本概念和计算公式 一.软件性能的关注点 二.软件性能的几个主要术语 1.响应时间:对请求作出响应所需要的时间 2.并发用户数的计算公式 3.吞吐量的计算公式 4.性能计数器 5.思考时间的计算公式 PS:下面是性能测试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系

讨论下并发用户数的计算

在网上发现了一个计算并发用户数的文章,想和大家讨论下并发用户数的计算. 原文章如下: --------------------------------华丽的分割线-------------------------------- 网站用户10w,用户每2天会登录系统一次,每天用户访问数是5w,用户主要集中在9:30-13:00和15:00-23:30两个时间段的12个小时里访问系统,平均每个用户在线时间为30分钟. 平均每小时在线用户数为:5w / 12 = 4167. 每用户平均30秒钟提交一次