服务器并发量估算公式和计算方法

最近需要对再次对服务器进行压力测试,这里整一下最近学习到的估算方案和估算方式。以下估算方式没有考虑类似于秒杀这种极端情况。

并发值估算

1.1 经典公式

一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据

  • 1)平均并发用户数为 C = nL/T
  • 2)并发用户数峰值 C‘ = C + 3*根号C

C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度

C'是并发用户数峰值

如用外卖点餐APP套入这个公式计计算下并发用户数100W用户下并发用户数大致范围:

假设外卖APP有100W个用户,而日活用户假设占12.5%即12.5W个日活用户,而每个日活用户打开APP到点餐平均时间大概为5分钟,而假设早上8点到晚上12点都会有用户使用该APP。则可以计算出一个值:

平均并发用户数C=125000*5/16*60=651
并发用户数峰值C`=651+3*根号 651=726

上面即为经典公式计算出的并发用户数,但看起来和实际情况可能有差异。

作为外卖APP大部分人都会在高峰期进行点餐,所以对于外卖APP这类应该单独进行考虑。

我们采用2/8原则来估算并发用户数,即80%的用户数会在高峰期点餐,而高峰期设定为11-12,17-19点一共5个小时,在这种情况下估算并发用户数:

平均并发用户数C=125000*5*0.8/5*60=1666
并发用户数峰值C`=1666+3*根号 1666=1788

1.2通用公式

对绝大多数场景,可以用(用户总量/统计时间)*影响因子(一般为3)来进行估算并发量。

比如,以乘坐地铁为例子,每天乘坐人数为5万人次,每天早高峰是7到9点,晚高峰是6到7点,根据8/2原则,80%的乘客会在高峰期间乘坐地铁,则每秒到达地铁检票口的人数为5000080%/(36060)=3.7,约4人/S,考虑到安检,入口关闭等因素,实际堆积在检票口的人数肯定比这个要大,假定每个人需要3秒才能进站,那实际并发应为4人/s3s=12,当然影响因子可以根据实际情况增大!

所以物联网设备其实是可以考虑为通用设备。

在比较极端的情况下考虑,100万个设备其中95%均为日活设备即95W,且假设其中80%的设备都会在3个小时内访问服务器(高峰期),则可以推算并发设备数。

950000*0.8/(3*60*60)=70/s

因物联网设备的不确定性较高,我们将影响因子设置为5

.70*5=350 即活跃设备数在每秒为350个。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 服务器并发量估算公式和计算方法

    最近需要对再次对服务器进行压力测试,这里整一下最近学习到的估算方案和估算方式.以下估算方式没有考虑类似于秒杀这种极端情况. 并发值估算 1.1 经典公式 一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据 1)平均并发用户数为 C = nL/T 2)并发用户数峰值 C' = C + 3*根号C C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度 C'是并发用户数峰值 如用外卖点餐APP套入这个公式计计算下并发用户

  • 服务器压力测试概念及方法(TPS/并发量)

    目录 1 压力测试中的指标 1.1 TPS 1.2 QPS 1.3 平均处理时间(RT) 1.4 并发用户数(并发量) 1.5 换算关系 1.6 TPS和QPS的区别 2 压力测试方法 3 相关文档 1 压力测试中的指标 1.1 TPS TPS 即Transactions Per Second的缩写,每秒处理的事务数目.一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程**(完整处理,即客户端发起请求到得到响应)**.客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使

  • golang 限制同一时间的并发量操作

    go的并发量是很厉害的,goroutine创建的代价极小,其中一个重要的原因是因为go采用了分段栈技术,每一个goroutine只占极小的空间.与此同时,goroutine是语言层面的,减少了内核态到用户态的切换开销,并且goroutine摒弃了一些golang用不到的一些os thread的系统调用,创建代价小. 我们可以一瞬间创建很多个goroutine,这是相当容易的. 乍一看,这与题目完全不符,前面说了那么多,难道不是鼓励我们多创建goroutine吗?不不不,goroutine确实很好

  • Python多进程与服务器并发原理及用法实例分析

    本文实例分析了Python多进程与服务器并发原理及用法.分享给大家供大家参考,具体如下: 进程 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 进程与程序的区别 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 并发与并行 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务 一 并发:是伪并行,即看起来是同时运行.单个cpu+多道技术就可以实现

  • Java请求流量合并和拆分提高系统的并发量示例

    目录 序言 理论基础 应用实践 (一)编码与使用 实现细节 1.ConcurrentLinkedQueue 2.CompletableFuture 其它应用场景 1.服务间接口调用 小结 序言 在并发场景中,当热点缓存Key失效时,流量瞬间打到数据库中,此所谓缓存击穿现象:当大范围的缓存Key失效时,流量也会打到数据库中,此所谓缓存雪崩现象. 当使用分布式行锁时,能够有效解决缓存击穿问题:当使用分布式表锁时,能够解决缓存雪崩问题.实际操作中,分布式表锁不在考虑范围,理由是降低并发量. 本文将从另

  • 深入理解JS中的Promise.race控制并发量

    目录 开篇 一.Promise.race 二.并发效果展示 三.代码 总结与思考 开篇 比如在开发中会进行一系列的网络请求,但是有些情况需要控制一下网络请求请并发量.这里简单的用 Promise.race 及 await 的特性来理解一下,如何对任务的并发量进行控制. 一.Promise.race Promise.race 作用就是将多个异步任务包裹起来,当有一个完成的话,那么就会触发 then 事件.除了这个不错的特性方法外,await 这个关键字也比较有用,可以这样理解,await 后面的代

  • nginx加php-fpm出现502 bad gateway错误的5种解决方法

    nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误. 服务器出现502的原因是连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错 因此如果你服务器并发量非常大,那只能先增加机器,然后按以下方式优化会取得更好效果;但如果你并发不大却出现502,

  • PHP 502bad gateway原因及解决方案

    nginx+php 出现502 bad gateway,一般这都不是nginx的问题,而是由于 fastcgi或者php的问题导致的,常见的有以下几种. 1. php.ini 的memory_limit 过小(如果有个别php程序进程需要占用极大内存时这个必须注意) 2. php-fpm.conf 中max_children或者max_requests 设置不合理(设置过小会因为没有足够的cgi进程处理请求,设置过大会出现一会儿有响应正常,一会儿等很久才有响应的情况,一般情况下children

  • 大型网站高并发解决方案分析之图片服务器分离架构

    1.介绍 现在很多的网站上都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影响网站性能的主要因素.因此很多网站都会将图片存储从网站中分离出来,另外架构一个或多个服务器来存储图片,将图片放到一个虚拟目录中,而网页上的图片都用一个URL地址来指向这些服务器上的图片的地址,这样的话网站的性能就明显提高了,图片服务器(ImageServer)的概念也就产生了. 1.1 图片服务器的优势 1, 分担Web服务器的I/O负载-将耗费资源的图片服务分离出来,提高服务器的性能和稳定性. 2, 能够专门

  • golang-gin-mgo高并发服务器搭建教程

    gin-mgo服务器搭建 该服务器实现简单接收请求并将请求参数封装存储在mongodb数据库中,本文将讲述gin-mgo的使用方法. 项目完整代码地址: https://github.com/wayne-yhp/golang-gin-mgo gin web框架使用介绍 首先获取gin框架依赖 go get gopkg.in/gin-gonic/gin.v1 func main() { server = gin.Default() app.server.GET("/do", IndexR

随机推荐