首页 > 代码库 > 1.1000万用户可能造成的并发数量是多少? 解决方案(理论篇)
1.1000万用户可能造成的并发数量是多少? 解决方案(理论篇)
今天开始对之前所能够想到的一些问题进行一些理论解决方案的研究。
首先,1000万的用户可以造成多么大的并发数量,应该是可以被计算出来的。我通过百度进行了一些搜索,关于用户数量与并发数的关系。
得到了一些资料,主要参考了一篇名为《并?发?用?户?数?、?吞?吐?量?、?思?考?时?间?的?计?算?公?式》的文档。
其中提到了关于性能需要考虑的几个方面,这些内容稍后再讨论。主要先说说几个公式
1.平均并发用户数的计算公式
C=nL / T
其中C是平均的并发用户数,n是平均每天访问用户数,L是一天内用户从登录到退出的平均时间(操作平均时间),T是考察时间长度(一天内多长时间有用户使用系统)
2.并发用户数峰值计算公式
C’ ≈ C+3根号C
其中,C’指并发用户数的峰值,C即是平均并发用户数。该公式的得出是假设用户的login session产生符合泊松分布而估算得到的
至于为什么会是这样一个公式来计算,我并未深究,也不知道其原因,目前看来,我也还不明白泊松分布是什么,用户session为什么会产生泊松分布。我也不知道。我所能了解到的就是这些计算方式一定各种前辈总结出的。先拿来得出结论,后续再去剖析这些原由吧。在此我们暂且保留这些问题,日后分解。
既然这2个公式我们来假设一下1000万用户可能会产生的并发情况
1.n每天访问用户数量=1000万
2.假设这个服务是用作网上银行的操作,L=一天内用户从登陆到退出的平均时间设为(5分钟),T假设每天早晨8点-12点,均有用户访问。时长16小时即960分钟。
(这个用户数量,我们就假定为平均每天访问系统的用户数,如果是总用户数量,那么则需要先算出1000万用户,每天平均有多少用户访问。)
C=10000000*5/960=52083.33/m (即52083.33每分钟)
3.并发用户峰值为
C‘ ≈ 52083.33+3*根号52083.33=52083.33+3*228.22=52767
感觉有点奇怪的样子,也许是我的一些参数设定不合理吧,或许这些并发数量的计算不应以天为单位,而应以忙时,闲时来划分,也许更为精确.无论如何,先根据这个想法进行探索假设吧.
但是需要强调的是,我在网上找到的资料中,有些计算是以小时得出的结果,有些是以分钟得出的结果.我这里使用的是分钟计算.所以我认为,平均并发用户数应该是有一个时间作为其单位的.
回到文章开头的话题,在搜索关于用户数量与并发数量的关系时还发现了几个专业的名词.会对性能产生影响.
1.响应时间:顾名思义了,对用户请求作出响应所需要的时间
2.吞吐量:指单位时间内系统处理用户的请求数
从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看,吞吐量可以用:字节/秒 来衡量
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力.
这里引用的都是查找来的文字,那么看起来说明的问题,但是给人感觉还是一知半解.希望可以在以后找到更多关于吞吐量的负载实例来说明吞吐量这个概念,把这些专业的名词屌丝化.
3.资源利用率
指系统各种资源的使用情况,如cpu占用率为68%,内存占用率为55%,一般使用“资源实际使用/总的资源可用量”形成资源利用率。
对于资源利用率如果让我用自己的理解来表述的话,应该是服务器相关的各种硬件软件的使用度,这个比例的高低会有什么样的后果,我还没有深思.也还没来得及去来查阅关于资源使用以及平衡的一些知识.这里再给自己留下一个问题吧.
4.思考时间
从业务角度来看,这个时间指用户进行操作时每个请求之间的时间间隔,而在做性能测试时,为了模拟这样的时间间隔,引入了思考时间这个概念,来更加真实的模拟用户的操作。这个解释,作为一个大白话王子,我觉得我这句话算是比较白了,不需要再进行翻译.目的可能就是为了提高性能测试的仿真度吧.
下面给出一个计算思考时间的一般步骤:
A、 首先计算出系统的并发用户数
C=nL / T F=R×C
B、 统计出系统平均的吞吐量
F=VU * R / T R×C = VU * R / T
C、 统计出平均每个用户发出的请求数量
R=u*C*T/VU
D、根据公式计算出思考时间
TS=T/R
本次关于用户数量以及并发数量的解决方案研究,我们计算出了1000万用户数量,每分钟的平均并发数量,以及峰值数量.
同时也注意到了,其他4会对性能产生影响的概念.
又再次引发了2个问题,
8.关于吞吐量的与服务器性能的关系.
9.资源利用率与性能的关系.
希望可以在后续的学习中,对这些知识进行白话式的解决方案研究.