如何计算并发数

一、经典公式

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

1)平均并发用户数为 C = nL/T

2)并发用户数峰值 C‘ = C + 3*根号C

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

C’是并发用户数峰值

举例

假设系统A,该系统有3000个用户,平均每天大概有400个用户要访问该系统(可以从系统日志从获得),对于一个典型用户来说,一天之内用户从登陆到退出的平均时间为4小时,而在一天之内,用户只有在8小时之内会使用该系统。

那么,

平均并发用户数为:C = 400*4/8 = 200

并发用户数峰值为:C‘ = 200 + 3*根号200 = 243

二、通用公式:

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

举例

1
2
3
4
5
6
以乘坐地铁为例子,每天乘坐人数为5万人次,每天早高峰是7到9点,晚高峰是6到7点,

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

三、根据PV计算公式:

Page Views一般指页面浏览量

1
2
3
4
5
6
比如一个网站,每天的PV大概1000w,根据2/8原则,
我们可以认为这1000w pv的80%是在一天的9个小时内完成的(人的精力有限),

那么TPS为: 1000w*80%/(9*3600)=246.92个/s,取经验因子3,

则并发量应为: 246.92*3=740

四、根据TPS估计:

Transcation Per Second 每秒进行的事务的数目。(整体定义事务的 请求、操作、返回)。

Think Time是一个真实的用户动作之间的等待时间。

公式为 C = (Think time + 1)*TPS

五、根据系统用户数计算:

并发用户数 = 系统最大在线用户数的5%到10%

六、服务的调用方的数量

拿什么来做为并发数

  1. 并发的用户数。有一部分用户使用业务,另外一部分用户 挂机,没有具体操作。
  2. 并发连接数。用户和服务器之间的连接。一部分连接在传输数据,一部分连接 仅仅连接而已。
  3. 并发请求数。有可能请求静态数据,有可能是写操作 这两者消耗性能不一样。
  4. 并发线程数。系统内,并发的线程数目。线程多不一定是用户造成的,有可能是系统复杂。

以上都不能准确的表示。没有并发数的统一标准。

一般在公司使用:同时服务的调用方的数量。

总结

以上都是预估的。所以都不准确,只能当做参考。真正的线上还是要做好扩容、限流等。

然后才能使用监控服务,对某个服务进行监控。比如淘宝的双11,商户详情服务、订单服务。才能知道峰值的并发数。


如何计算并发数
http://hanqichuan.com/2022/08/10/系统设计/如何计算并发数/
作者
韩启川
发布于
2022年8月10日
许可协议