关于服务器并发量的简单计算

最简单的计算方式就是根据服务器带宽与页面的大小

1.假设机房带宽为10Mbs,页面的大小为20KB(包含所有的js、css、图片)

    同时并发量的理论值: 10*1024/(8*20)  = 64个请求/秒  

    理论上1秒钟同时可以有64个请求访问页面。

     注意:10Mbs是位(b),1个字节8位,所以要除8。

2. 假设进来的人是匀速的增加,

   根据”三秒定律”(页面打开速度不超过3秒),可得出并发量在单位时间内应是192个请求;

    一分钟的请求量在3840。

3.根据二八定律,即80%的访问量发生在20%的时间里

     3840*24*60*0.2/0.8=1382400 人次

     而发生在每天的高峰期(大约5小时)内的在线人次在110万人次,一个小时为22W人次。

4.当然以上的计算都是理论值,如每个访问者停留页面的平均时间为1分钟左右,访问者的进入和退出都是比较符合正态分布.。

  如果是特殊情况服务器肯定是支撑不了这么多人的,例如同一时间有大批量的访问者进入,例如考试系统。又或者同时刷新页面。

而且在实际过程中,现在的页面都肯定超过20KB,那么对带宽的要求也就更大,还有同一个局域网访问情况也要考虑。

以笔者的实际项目来说,我的项目是考试系统。出现过2次比较极端的情况。

本考试系统,登陆的页面容量比较大,所有的js,css以及图片未优化前在400KB左右,我们就以400KB为基准,所有后面要用的文件是在首页一次性加载下来的。

我用的是2台服务器,均为10Mbs带宽。 按照上面的计算方式可得出

2台服务器单位时间内应可以处理19个请求,一天能承载的测评人次是14W左右,而发生在每天的峰值时间(大约5小时)内在线人次在11W左右。

高峰期一个小时的在线人次在2.2W左右。

第一次我们测评人数是7949人,而这些测评者主要使用的是自己的手机分散测评,测评的时间线如下

高峰期是在11点期间,而从这一个小时的日志中查到与实际的服务器数据库的写入人次是17783人次(测评系统的特点是除了极少的几个页面不参数数据库数据写入,其他都是要写入答案或者个人信息)。这一天的测评情况非常顺利,服务器没有任何压力。

第二次,总共只测了2433人,但其中有1200人左右是在局域网且同时登陆系统,第一次导致其中一台机器几乎卡死,后来查看服务器日志,发现瞬时峰值有150个请求/秒,并且我是将所有的静态资源如 JS\CSS\图片都存放在一台服务器中的,也导致这台服务器的带宽一直很高。为了解决这个问题,只好每隔10秒登陆200个考生,一分钟内全部登陆完毕,后面1200人同时进行测评没有任何问题。主要瓶颈就是集中登陆环节。第一次出现问题的时间是下午13点,第二次分批次登陆是17点。测评的时间线如下

而这2个时间段的测评人次分别是

可以看出,出问题的时段,与数据库交互的次数其实很少,而下午17点有近27000次的交互,由此也可以得出主要瓶颈就是集中登陆系统导致的,而实际的数据也符合上面的通过计算得出的结果。

另一种计算方法——服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数;

并发的意思是指网站在同一时间访问的人数,人数越大,瞬间带宽要求更高。服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数;

假设一个OA系统有1000用户,这是系统用户数;最高峰同时有500人在线,是“同时在线人数”,也称作“最大业务并发用户数”;500个同时使用系统用户中20%查看系统公告,不构成压力;20%填写表格(只在提交时才会请求,填写对服务器不构成压力);40%在发呆(什么都没做);20%用户不停从一个页面跳转另一个页面(只有这20%对服务器产生了压力)。

说明服务器实际压力,能承受的最大并发访问数,既取决于业务并发用户数,还取决于用户的业务场景,这些可以通过对服务器日志的分析得到。

一般只需要分析出典型业务(用户常用,最关注的业务操作)

给出一个估算业务并发用户数的公式(测试人员一般只关心业务并发用户数)

C=nL/T

C^=C+3×(C的平方根)

C是平均的业务并发用户数、n是login session的数量、L是login session的平均长度、T是指考察的时间段长度、C^是指业务并发用户数的峰值。

该公式的得出是假设用户的login session产生符合泊松分布而估算得到。

假设OA系统有1000用户,每天400个用户发访问,每个登录到退出平均时间2小时,在1天时间内用户只在8小时内使用该系统。

C=400×2/8=100

C^=100+3×(100的平方根)=100+3×10=130

另外,如果知道平均每个用户发出的请求数u,则系统吞吐量可以估算为u×C

请注意:精确估算,还要考虑用户业务操作存在一定的时间集中性(比如上班后1小时内是OA系统高峰期),采用公式计算仍然会存在偏差。针对例子OA系统可以把1小时设定为考察时间的粒度,将一天8小时划分为8个区间,这样可以解决业务操作存在集中性问题,更趋于精准,偏差更小。

原文链接:https://www.cnblogs.com/zhuiyue82/p/11451311.html

参考:https://blog.csdn.net/cardinalzbk/article/details/50822898
https://www.zhihu.com/question/39608108/answer/82173112

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注