如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
估算并发用户数的方法作者:EricManWong一、引言为了进行容量规划和进行性能方面的管理,正式发布产品之前往往有必要估算系统能够承受的最大并发用户数。因为系统资源的使用直接与并发用户数挂钩。就拿Web应用来说,内存的使用,CPU的利用率,服务器的进程/线程数,数据库连接数和网络带宽占用率都是关于并发用户数的增函数。尽管知道并发用户数的重要性,我们还是经常通过第六感或者是大胆臆测去估计这个数值,十分缺乏理性。在本文中,我们会尝试去介绍一种简单的方法来得出这个并发用户数的估计值——通过某些其他的参数,这个值将会更加易于估算并且更加合理。二、一种不令人满意的方法人们时常用的一种估计方法是这样的:假设并发用户数等于全部用户数乘以某个比例。这不是一种好方法,因为就算有时候总的用户数可以可靠的估计出来,然而百分比——尽管不能总说——是一个不具有说服力的魔力数字。必须指出的是,刚提到的这个百分比不能视为在某个时间段内登录系统的那部分用户。在某些情况下才能肯定的得出登录系统的用户数。举个例子,如果我们知道每个用户都会在每个月的某一天使用且只使用一次某个系统,那么我们可以理所当然的认为任意一天使用该系统的百分比是大约3.3%(作者注:就是1/30)(译者注:30就是提到的“每个月”。。)尽管如此,仅仅依靠这个百分比不能用来推导出并发用户数。因为在同一天使用系统的人并不是同时使用的。有的用户可能在上午使用,有的用户可能在下午使用。我们接下来看看一种更好的方法。三、估算平均并发用户数的公式我们通过定义并发用户数来开始这一节。但是在之前,我们必须搞清楚loginsession的含义。loginsession的意思是通过开始和结束时间定义的一段时间。在这段时间内,系统的一个或多个资源被占用。使用任意一个需要用户登录的Web应用作为例子,loginsession从用户登录到系统开始,到用户退出系统结束。每次用户的登录都创建了一个用户的session(作者注:占用了系统的内存)。loginsession的时长取决于开始和结束的时间。我们现在做好定义并发用户数的准备了。我们应该同意某个瞬间的“并发用户数”是这个瞬间的loginsession的个数。在下图中阐明了这个定义:横轴是时间轴。每一条水平线段代表了一个loginsession。处垂直的那条线与水平线有三个交点,那么并发用户数是3。让我们关注时间从起点到随意的某个时间。下面的结论可以利用数学知识证明:……………………………(*)另外,如果从开始到时间T的范围内loginsession的总数是n,并且平均的loginsession时长是,那么……………………………(**)正式的证明过程见附录。直觉上来看,这个公式可以这样来认为:设想每条session的线条都是首尾相连的。如果这条线的长度超过了,那么我们就把它折叠起来,使得每一段都长度都是T。折叠的次数就如同平均并发用户数。在下图对此做出了说明:四、估算其中的参数为了利用第三节的公式计算平均并发用户数(C),前提条件是在关注的时间段(T)中计算出两个参数:loginsession的总数(n)loginsession的平均时长(L)在这一节中,我们会给出估算这两个参数的一些建议。首先,必须指出通过公式得出的C,仅仅是一个平均值。有可能并发用户数会在这个时间段内起伏很大。因此,如果我们希望利用C来作为并发用户数,我们应当限制关注的时间以便新的loginsession的比例(作者注:比如说n/T的比例)能够或多或少的保持稳定。举个例子,如果我们知道系统仅仅在工作时间内使用,我们可以只关注工作时间,而不是一整天。那么T就等于8(作者注:假设8小时工作制),而不是24。否则,C的值就会大大减少,因为事实上没有人在非工作时间使用系统。loginsession的总数(n)和loginsession的平均时长(L)经常可以由用户总体和使用习惯来确定。举例来说,如果有N个潜在用户,并且我们知道每个用户每天可能使用系统一次、两次、三次的概率分别是,并且假设用户每天使用系统不会超过3次,。另一参数——平均时那么每天的loginsession的总数就的总数就是长,可以通过观察样本用户来估算。在许多的系统中,不同的用户对系统的使用频率以及平均使用系统时长波动的范围都很大。在这样的情况下,如果我们将相似的用户分类,上述的分析依然成立。我们可以计算出每一类用户的并发用户数并且将结果整合在一起。无可争辩的是,用户的使用习惯往往是很难准确预测的。但是对于大多数的系统,尤其是内部的应用,一些这方面的合理的、粗略的数据是可以得到的。下一节的例子会对此做出说明。五、一个例子H市政府准备为了其170,000名员工运行一个薪酬系统,员工可以通过此系统查询自己