专栏名称: 朱小厮的博客
著有畅销书:《深入理解Kafka》和《RabbitMQ实战指南》。公众号主要用来分享Java技术栈、Golang技术栈、消息中间件(如Kafka、RabbitMQ)、存储、大数据以及通用型技术架构等相关的技术。
目录
相关文章推荐
顽主杯实盘大赛  ·  大娃封神一战 ·  2 天前  
顽主杯实盘大赛  ·  大娃封神一战 ·  2 天前  
51好读  ›  专栏  ›  朱小厮的博客

小短文 | 高并发系统,如何计算并发量和峰值数据?

朱小厮的博客  · 公众号  ·  · 2019-09-03 08:42

正文

点击上方“ 朱小厮的博客 ”,选择“ 设为星标

回复” 2048 “获取新鲜整理的学习资料



一、经典公式:

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

1、平均并发用户数为 C=nL/T 2、并发用户数峰值 C‘=C+3*根号C C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度 C’是并发用户数峰值

举例1

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

平均并发用户数为: C=400*4/8=200 并发用户数峰值为: C‘=200+3*根号200=243

举例2

某公司为其170000名员工设计了一个薪酬系统,员工可进入该系统查询自己的薪酬信息,但并不是每个人都会用这个系统,假设只有50%的人会定期用该系统,这些人里面有70%是在每个月的最后一周使用一次该系统,且平均使用系统时间为5分钟。 则一个月最后一周的平均并发用户数为(朝九晚五):

n=170000*0.5*0.7/5=11900 C=11900*5/60/8=124

吞吐量计算为: F=Vu*R/T单位为个/s F为事务吞吐量,Vu为虚拟用户数个数,R为每个虚拟用户发出的请求数,T为处理这些请求所花费的时间 整编:微信公众号,搜云库技术团队,ID:souyunku

二、通用公式:

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

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

三、根据PV计算公式:

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

1000w*80%/(9*3600)=246.92个/s ,取经验因子3,则并发量应为: 246.92*3=740

四、根据TPS估计:

公式为 C=(Thinktime+1)*TPS

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

并发用户数 = 系统最大在线用户数的8%到12%

备注: 本人目前在网上只找到了这5种,计算并发用户数的方法,其他计算方法,欢迎大家留言补充







请到「今天看啥」查看全文


推荐文章
顽主杯实盘大赛  ·  大娃封神一战
2 天前
顽主杯实盘大赛  ·  大娃封神一战
2 天前
医学界  ·  听说你是医生,我一定要娶你
8 年前
赛先生  ·  科普比推理小说更为迷人|书评
8 年前
孤读先生  ·  他爱不爱你,看吵架态度就知道
8 年前