系统容量预估
系统容量预估
业务系统往往会被问到一些资源的问题,需要多少机器,机器足不足以支撑当前的业务增长等,这些都是系统容量的一些估算问题。
服务器容量
容量设计需要考虑的维度:业务规划 + 架构复杂度 + 组件模块 + 高可用 + 安全 + 存储复杂度
容量指标:单机QPS,峰值,平均值,用户数、并发、稳定性
有多少数据量,数据维度有哪些,服务业务有哪些,数据增长预想如何等
这里我们只是谈谈简单的业务通过单节点处理的情况(当然接入网关的处理能力又取决于后端的服务集群的处理能力这里先忽略)
我们通过案例分析验算一下
估算案例一:1万用户需要多大的并发数,需要多少台机器?
8小时总访问量:1万用户 * 10%的常驻访问率 * 15秒上报周期(每分钟访问4次,每天按照8小时计算)得出日访问量 200万 ~2000万 QPS : 200~2000万 / 8 * 60 * 60 ≈ 100 ~ 700 QPS
并发数 = QPS * 平均响应时间,假设平均响应时间=100ms,那么100~700 * 0.1 ≈ 10 ~ 70
并发数 =(200~2000万/ 8 / 3600)* 影响因子(一般为3)来进行估算并发量。≈ 200~ 2000
最终得出结论,1万量车每15秒上报一次数据。只需要支持 100左右并发处理能力即可了。
如果单节点服务器的QPS是1000,那么一台机器就能满足 1万台车的数据上报。
估算案例二:业务增长机器能否抗住,需要加多少台机器,依据是什么?
常见的容量评估包括数据量、并发量、带宽、CPU/MEM/DISK等,
以并发量为例,通过五个步骤,解答业务的疑虑。
一、评估总访问量(时间、用户访问量)
对于一个运营活动的访问量评估,或者一个系统上线后PV的评估,问业务部门获得。 例如一个推送活动:计划10分钟,推送1000w用户,10%的消息点击率 那么系统的访问量:1000w * 10% = 100w。10分钟会有100w的访问。
二、评估平均访问量QPS
总量除以总时间,如果按照天评估,白天12小时大概4w秒 100w / 30*60 ≈ 600QPS 说明系统需要支持至少 600QPS的访问能力持续10分钟。
三、评估高峰QPS

需要根据业务访问趋势图预估,可能非常大,暂定为2.5倍
600 * 2.5 = 1500QPS
四、评估系统、单机极限QPS(需要压测指标数据)
假设我们的单节点访问能力优化到 1000QPS (tomcat压测单机只能抗住1200的QPS 不能打满打八折 QPS1000)
五、峰值QPS是1500,单机QPS是1000,那至少需要2~3台机器。
《互联网架构设计如何进行容量评估》
五个确认步骤
-
一,评估总访问量:询问产品、运营;
-
二,评估平均访问量:总量除以总时间,一天算4w秒;
-
三,评估高峰QPS:根据业务曲线图来;
-
四,评估系统、单机极限QPS:压测很重要;
-
五:根据线上冗余度解题:估计冗余度与线上冗余度差值;
《场景分析》
这里我们讨论个场景问题:如果有如下需求,我们应该如何满足业务 一、100万用户秒杀10个商品 二、1秒杀支持1000笔交易
首先分析需要考虑的问题维度有哪些
-
1、瞬时并发:超出系统处理能力的时候,要有对后端服务的保护机制。不能引起服务器或者数据库雪崩。
-
2、库存超卖:秒杀场景或者并发场景下,如何保障系统资源的并发安全问题,需要优化和评估当前的技术方案。
-
3、资源估算:满足业务场景业务,需要多少资源合适。弹性如何获得有效的依据数据,假设我们准备的弹性资源池足够大。
所以从技术角度上系统应该如何做好限流、并发安全、资源弹性。就能初步的评估需要多少资源能满足业务了。 那么我们再来分析下上面两个业务需求。 提取下关键信息:100万用户、库存10个商品、业务时间要求1秒。 我们可以得出两个维度的信息
-
1、10个商品1秒卖完,10QPS。
-
2、100万用户同时购买,100万QPS。
显然第二个是不太合适的。因为缺少单位时间的业务量,只有用户数。所以如果想要完成评估,单位时间的业务要求才是基础考虑要素。 一个简单的方案:网关层满足限流能力,支持10QPS的处理能力,那么需要增加一台机器即可。剩下的100万用户都访问拒绝,缓冲队列只支持10个用户进入。
如有不对欢迎指正,感谢阅读。
计算公式:
100W个用户,95%均为日活设备即95W
9500000.8/(36060)=70/s
.705=350 即活跃设备数在每秒为350个
100万个设备,日活占12.5%,用2/8原则来估算并发用户数,即80%的用户数会在高峰期点餐,一共5个小时
平均并发用户数C=12500050.8/560=1666
并发用户数峰值C`=1666+3根号 1666=1788
1)平均并发用户数为 C = nL/T
2)并发用户数峰值 C‘ = C + 3*根号C
C是平均并发用户数,n是login session的数量,L是login session的平均长度,T是值考察的时间长度
C’是并发用户数峰值
QPS和并发量
QPS(q) :每秒处理的请求数量 并发量 (c):同时支持多少个用户在线。与服务器的请求处理模型有关,如果是BIO模型,则并发量就受限于最大能支持多少个线程,如果是NIO模型,则并发量与socket连接数相关 平均响应时间(t):单位为毫秒
他们之间的关系是 q = (1000/t)* c
单台机器的QPS为1000QPS,并发为200