2.1 什么是容量
容量意指容量规划,从经济学到工程领域都有其应用,容量规划听起来是个高大上的概念,本质来说,其实就是资源利用率的管理,一个较典型的例子就是容器,例如我们是用水杯来接水喝,水杯总是有一个最大容量,我们所接的水肯定都在杯子容量之内,超过这个容量水就会溢出,这个道理还是很易懂的。其实在接水这个动作发出之前,我们通过观察就已经知道了杯子的最大容量是多少,所接的水必然会控制在杯子容量之内,如果一个杯子容量不够,口渴的同学可能会选择更大的杯子或者同时用两个杯子。因为这是潜意识里的行为,尽管你可能没有注意到,其实这就是在做容量规划。说到这我猜你也看出来了,容量规划的前提是,只有在事先知道系统可承载的最大压力的情况下才能做好流量控制和容器分配。杯子的容量是很直观的,我们在接水之初已经掌握了其容量大小,因此,可以方便地控制接水的流量和速度,然而很多抽象的容器其容量并不直观,因此,容量规划就是针对不容易测量容量的容器,通过一系列方法找到其最大容量,在此基础之上再做更细粒度的规划管理。
容量是指一个系统可处理容纳的最大能力,这个能力可以简单理解为访问量,即流量。如某个网站正常情况下可承载的流量是8000万PV,超过了这个流量,用户请求的处理将受到影响,如响应变慢,或者干脆返回空白页。因此,8000万PV的访问量便是这个网站的容量。可见,网站的容量规划极其重要,如果因为容量不足而影响网站业务的话,对于互联网公司来说,给公司带来的损失很可能是很惨重的。对于一个公司来说,服务运维是保证业务稳定的核心,规划好服务的容量是保证业务稳定的前提。
容量规划和性能优化是两个经常被混淆的概念,它们相互影响,但却是有着不同的目标。性能优化是最大限度地提升系统的性能,比如对内核参数、模块参数的调优,不过调优提升的性能有限,在起初调优的作用是非常明显的,到后来基本上就到了极限,已无潜力可挖。而容量规划是想找出相应服务质量对应的硬件规模,与硬件是否调优关系不大,因为在调优前后,这两种状态下相应的容量也是不同的。比如在调优之前,系统可承载的最大流量相对较小,调优之后,系统可承载的最大流量就增多了,不过这对容量来说不重要,容量与调优并不冲突,它们是两码事。总之容量规划并不是性能优化,它们虽然相互影响,但却有着不同的目标。性能优化是最大限度地提升系统的性能,而容量规划是在成本和性能之间找到平衡点。
对真实系统压力的测量比任何经验估算都靠谱,我们应该以实际容量的观测数据来驱动未来容量的预测,而不是简单通过极限测试等方法来模拟。如果没有找到测量系统容量的方法,则不能科学地对系统进行容量规划,而只能根据业务类型、经验去猜测,这种情况则仁者见仁智者见智。