传统IT容量估算思路
参考: https://www.cnblogs.com/zhangweizhong/p/5844961.html
https://www.cnblogs.com/zhangweizhong/p/5772330.html
对于上面这个中小型Web架构来说如何对网站做容量预测:
当你的BooS问你,我们的网站在目前的战略下,要做到30w以上的PV,你看我们需要买多少带宽合适?
对于这个问题,相信若从来没有想过这个问题,你很可能一下子一脸懵逼,怎么测算?
其实冷静下来,就会发现,不过就是一道小学数学题罢了。
不就是将30万PV的访问量,换算成带宽嘛,将问题拆分如下:
1. 一天30万的页面访问(PV),转换为每秒访问量(QPS): 30万/(24 × 60 × 60)秒 = 3.47个请求每秒
2. 知道了一秒大概是3.47个请求,将请求化整,就是4个请求每秒.
3. 再来看看我们整个网站平均一个页面有多大,怎么看?Chrome等浏览器打开调试窗口(如:按F12) ,访问自己的网站,看一下最右下角的访问统计,你就知道自己当前访问的这个页面有多少资源,这一次访问发起了多少个衍生连接,以及这一次压缩传输的数据大小,已经资源到客户端后,解压到大小,我们这里主要关心压缩传输大小,通过对整个网站的网页做访问,记录这些值,并求出平均页面大小,接着就可以继续下面的计算了。

4. 知道了一秒大概有4个并发请求,而平均一个页面假如是0.4M,那么4个并发请求需要占用的带宽不就是 4×0.4M=1.6MB,在换算成比特,就是1.6MByte × 8bit= 12.8Mbps 这就是你的网站大概需要多少带宽。
5. 引用道友的公式如下:
网站带宽= PV / 统计时间(换算到S)*平均页面大小(单位KB)* 8
假如现在你们公司的网站上线了,如下图这样的架构,有一天,你们的营销,产品什么的部门过来找你说,这两天要进行一个促销活动,我们的网站需要加多少服务器?
听到这样的问题,你是否又会一脸懵逼。

好接下来就来分析这样的网站架构,如何进行容量预测,还有老规矩抽象问题,拆分化
1. 要测试容量,首先要对目前整个网站架构的实际峰值有较为准确的压测数据。
如何获取较为准确的压测数据?
1.1. 将上面结构简单化为单一web服务器
下面以动静分离的结构来说明:
单一静态Web服务器的压测:
压测集群端------------httpd或Nginx-----css,js,html等静态资源服务器
\________图片服务器
上面整个后端称为一个静态Web服务器
当然,若网站规模没有这么大,我的css,js,html,图片都和Web服务器在一台主机上,那它也是静态Web服务器,上面只是将这些资源拆分开了,和一台没啥区别。
要测试这个静态Web服务器的压力,你需要将自己的业务数据放到对应的位置,就像真实用户访问它一样。
看看多大并发下,一台物理静态Web站点会挂掉,若是虚拟机也一样。
然后,就需要分析多次压缩的结果,并计算出静态Web服务器的并发响应能力,接着计算出图片和css,js,html的服务器分别承受了多少压力,计算出它俩的比值,这样就知道瓶颈点所在了。
1.2 计算动态Web服务器的压测值:
压测集群端-------------------PHP-FPM/Tomcat---------关系型数据库
\____________session缓存数据库
|—————列式缓存数据库
。。。。。。
这个结果的压测和静态区别不大,也是要单台测试,但这里需要注意,通常对于动态Web服务器来说,关系型数据库往往是其最脆弱的部分,而其它缓存数据库,如: memcached, redis, mogondb等相对能承受的压力会更大,因为它们的数据都在内存中,而关系型数据库的数据通常在磁盘,因为太海量了。
所以基于上面的理解,压测的关键点是在前端动态Web服务器自身和它与后端关系型数据库上。
当前端动态Web服务器达到峰值后,大概有多少与关系型数据库的连接,计算出比值,在对关系型数据库中的业务数据做压测,看看其最大峰值是多少,就可以知道当前端动态Web服务器增加到多少时,就需要增加关系型数据库了,这里也要注意与这些缓存数据库的压力测试,和比值计算。
2. 通过以上测试,可以知道当前网站中单台静态或动态Web服务器的峰值是多少。
3. 接着就需要将动静合并为正常的网站服务器来压测
压测集群端--------------负载均衡器--------------单台静态Web服务器
\_________单台动态Web服务器
然后在做网站峰值测试,看看整个Web站点达到峰值时,有多少流量被分到静态了,有多少流量被分到动态了,依然是计算出比值,注意这里说的峰值,是指静态或动态服务器宕机了。这样一来就知道整个网站的峰值是多少了,瓶颈点通常都是动态服务器。
4. 接着回答上面的问题,现在我们知道了网站的峰值,知道了动静分离的比值,若你只有一台Web服务器,不分什么动态静态,也一样,这更简单,不需要前面的负载均衡器,直接测试就是了,当你的Web服务器挂了,就是它的最大峰值了。
4.1. 要增加多少台服务器?
你首先需要从营销或产品哪里知道,本次活动范围有多大,让它给你一个预估值,即他们感觉这次可能有多少人会打开网站的活动页面,假如是50万,即50万的PV。
4.2. 查询之前是否有过类似的活动统计数据,若有那是最好的,这样你就可以参考以前活动时,网站的最大峰值与平时网站访问量做个对比,并计算出平均比例,这样你就大概心中有数了,你就知道类似活动可能带来比平时访问量多几倍的流量了。
4.3. 现在你知道了以前活动的峰值流量是平时访问流量的几倍后,你也知道了这次可能有大概50万的PV,你还知道我单台Web服务器最大能承受的并发流量,在结合当前网站的实际情况,主要是服务器台数,做计算,看看目前全部的服务器能承受多大的并发压力有多大。
4.4. 计算一下50万PV能给单台Web服务器带来多大的并发压力:
4.4.1. 计算方式就是 此次活动大概要持续多长时间,假如是1天,那么就需要知道黄金时间大概能持续多久,假如是6个小时。
先计算
(50万PV × 页面衍生访问数) / (6 × 60 × 60)秒 × 希望让用户打开页面的等待时间 × 因数 = 单台Web服务器要承担的并发压力。
注: 因数: 就是前面计算出了的,以前活动时峰值并发流量和平时并发流量的倍数。
当你计算出一台Web服务器需要承担的并发压力后,就可以根据当前网站的实际压测数据做评估,考虑下这些服务器运行了多久了等等因素后,在做以下计算:
若没有做静态分离,就是单台Web直接上的,就可以这样计算:
单台Web服务器需要承受的并发压力 / 网站已有服务器数量 = 实际每台服务器必须应该承受多少并发压力。
若做了动静分离,或前端加了负载均衡,就需要这样算:
根据负载均衡分担压力到后端的不同Web服务器的压力比值,算出每个后端服务器需要承担的负载压力:
假如是动静分离,并且比例是8:2,即静态8,动态2
单台Web服务器需要承担的总并发压力 × 80% = 静态Web服务器需要承担的压力
单台Web服务器需要承担的总并发压力 × 20% = 动态Web服务器需要承担的压力
接着根据动态Web服务器访问后端关系型数据库的压力比值计算出后端数据库是否能承受这样的压力。
知道了动静Web服务器需要承担的压力值后,需要根据之前对动静Web服务器的压测值,做对比,并计算出差距,然后在根据这个差距来计算超过这个差距,需要增加多少台服务器。并且也知道需要增加那些服务器了。
最后:还有需要根据服务器的折旧率来评估一个比率,使用这个比率 乘以 单台动静服务器的压力,在来评估需要增加的服务器数量。
由于本人能力有限,本文所有思路仅做参考,可结合实际来自行求证!
传统IT容量估算思路的更多相关文章
- 虚拟化原理到K8s实践经验路线总结
以下这些内容均为自行学习总结的内容,很多内容没有写概括介绍,看起来可能会有些突兀,但并不影响整体性,我自己的学习经验告诉我,这些内容还仅仅是最精简的核心部分,周边还有很多可扩展内容,主要是操作系统生态 ...
- Java 领域从传统行业向互联网转型你必须知道的事儿
我为什么要写这篇文章 武林中,"天下武功出少林"指各门各派的武功都与少林武学有一定的渊源,技术也是相同的道理,对于Java领域的应用而言,传统行业与互联网行业的技术都来自J2SE和 ...
- 第四章 电商云化,4.1 17.5W秒级交易峰值下的混合云弹性架构之路(作者:唐三 乐竹 锐晟 潇谦)
4.1 17.5W秒级交易峰值下的混合云弹性架构之路 前言 每年的双11都是一个全球狂欢的节日,随着每年交易逐年创造奇迹的背后,按照传统的方式,我们的成本也在逐年上升.双11当天的秒级交易峰值平时的近 ...
- Hadoop学习笔记系列文章导航
一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...
- ofo走出校园观察:市场定位导致产品错位?
Ofo和摩拜单车虽然同样都是做单车共享,但实际上两者在最初的市场定位是有明显的差异的,因此提供的产品方案也存在巨大的差异. 市场定位不同,导致产品方案的巨大差异 摩拜单车一开始就定位于开放市场,充分的 ...
- 【转】磁盘I/O那些事
背景 计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代.然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时 ...
- CodeCraft-19 and Codeforces Round #537 Div. 2
D:即有不超过52种物品,求容量为n/2的有序01背包方案数.容易想到设f[i][j]为前i种物品已用容量为j的方案数,有f[i][j]=f[i-1][j-a[i]]*C(n/2-j+a[i],a[i ...
- OCR技术浅探(转)
网址:https://spaces.ac.cn/archives/3785 OCR技术浅探 作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行 ...
- OCR技术浅探:特征提取(1)
研究背景 关于光学字符识别(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研究人员对相关的技术研究已久,也有不 ...
随机推荐
- kubernetes(k8s) Prometheus+grafana监控告警安装部署
主机数据收集 主机数据的采集是集群监控的基础:外部模块收集各个主机采集到的数据分析就能对整个集群完成监控和告警等功能.一般主机数据采集和对外提供数据使用cAdvisor 和node-exporter等 ...
- Java自学-面向对象 类和对象
Java中的类和对象 引入面向对象的基本概念 假设,我们要设计一个LOL这样的游戏,使用面向对象的思想来设计,应该怎么做? 步骤 1 : 设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必 ...
- 简要介绍Linux网络服务的种类
如果有人问你Linux最强大的功能是什么,你大概会回答“是网络功能”.Lmux操作系统的优势之一就是网络功能了,这包含比较稳定的系统资源分配,以及较为安全的网络防护能力,所以许多人都喜欢用它来进行网络 ...
- [echart] webpack中安装和使用
安装echart npm install echarts --save 全量引入 可以直接在项目代码中 require('echarts') 得到 ECharts. 官方示例 var echarts ...
- kubernetes V1.16 Ingress-nginx部署
Ingress 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes中可以通过NodePo ...
- vue数组更新界面无变化
1. vue数组更新界面无变化 1.1. 说明 对数组进行更新或者添加,一定要注意方式,我的情况是数组套数组,双重循环,在造数据的时候,不断从尾部添加数据,所以写成了如下形式,每次下拉都会去加载一批相 ...
- Windows Server 2012 R2 远程桌面自动设置为不允许连接问题解决方案
用“gpedit.msc”调出策略组设置窗口,在策略组界面点击:计算机配置->管理模块->Windows组件->远程桌面服务->远程桌面会话主机->连接->允许用户 ...
- 理解 spring 事务传播行为与数据隔离级别
事务,是为了保障逻辑处理的原子性.一致性.隔离性.永久性. 通过事务控制,可以避免因为逻辑处理失败而导致产生脏数据等等一系列的问题. 事务有两个重要特性: 事务的传播行为 数据隔离级别 1.事务传播行 ...
- MySQL-长事务详解
前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本 ...
- OSX 优化配置
修改用户名 sudo hostname macbookpro sudo scutil --set HostName macbookpro sudo scutil --set LocalHostName ...