随着业务的增长,日流量从10w级别,增涨到100w级别,这时候就需要进行容量预估。
什么样的场景需要进行容量预估呢?
- 容量有质变性增长
- 临时运营活动
- 新系统上线
场景一:
pm要做双十一活动,技术老大杀过来,问了两个问题:
- 机器能扛得住吗?
- 扛不住,需要加多少台机器?
那些指标需要进行容量预估?
看具体的业务 ,对应到系统侧的主要矛盾是什么,例如:
- 数据量
- 并发量、吞吐量
- 宽带
- cpu/mem/DISK等
向微博帖子等是数据量为只要矛盾,12306的抢票业务就是并发量为只要矛盾,音视频、直播业务宽带为只要矛盾,数据计算、区块连等是CPU为只要矛盾。
如何进行容量预估?
第一步:评估总访问量。
答:询问产品和运营同学活动的用户量,预计有用户会来点击?
例子:某公司要做一个APP-push的运营活动:
1. 计划在30分钟内完成5000w用户的push推送
2. 预计push消息点击率10%
push落地页系统的总访问量?
答:5000w*10%=500w
第二步:评估平均吞吐量(QPS)
答:我们假设所有的请求都发生在白天。
例子一:push落地页30分钟的总访问量是500w,平均QPS是多少?
答:500w/(30*60) = 2778,大概3000QPS.
例子二:某网站首页日均PV约8000w, 平均QPS是多少?
答:一天按4w秒算,8000w/4w=2000, 大概2000QPS。
第三步:评估峰值吞吐量QPS。(我们要抗住的是峰值QPS)
答:绘制业务趋势访问图。根据访问图来计算峰值QPS。如果没有趋势访问图,我们就根据二八原则,假设80%的请求访问在20%的时间上。但是像秒杀业务这类不能这样计算。
根据计算得到峰值QPS为5000QPS.
第四步:评估系统、单机极限QPS;
答:压力测试,计算出一台机器的QPS,记住磁盘,内存,io,宽带都不应该是系统的瓶颈。
假设压力测试得到,单台机器极限是1200,因为不会跑满一般为80%,也就是单台机器抗1000。
第五步:根据线上冗余的做决定。
答:比如线上机器有2台,峰值5000,单机1000,两台扛不住。在加3台,4台更稳。
~~~~
结论:
互联网架构设计如何进行容量评估呢(以吞吐量为例)?
- 评估总访问量:询问产品和运营
- 评估平均吞吐量:总量除以总时间,一天算4w秒。
- 评估峰值吞吐量QPS: 根据业务曲线图,或者二八原则。
- 评估系统、单机极限QPS:压力测试。
- 根据线上冗余的做决定:计算需求和线上冗余度差值。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。