实际上负载监控的作用远远高于其起初设计目标。随着业务的增长,可以看到集群负载也随之增长,虽然有波动,但是通过计算后仍会随着业务增长表现出增长趋势,那么系统就可以根据近一段时间内的负载增长状况,结合业务实际增长状况,预测出未来该集群所要达到的负载值,当超过一个临界值的时候(如80%负载),可以有计划的实行扩容操作(增加设备),而不是等到业务突然呈现高负荷、稳定性降低的时候,才紧急进行设备扩充。
关于负载预测,我在之前有提到过,我是使用线性回归方法计算的,其中最小二乘法计算公式如下:
 最小二乘法公式
下面代码简单枚举历史10个点来计算该设备负载增长率:
//Y坐标值表示设备历史负载 $y = array(52.09, 52.4, 53.29, 54.22, 55.15, 55.83, 56.89, 56.98, 57.55, 57.8);
//X坐标值表示顺序天数 $x = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//计算X和Y均值 $ax = array_sum($x)/count($x); $ay = array_sum($y)/count($y);
//计算斜率公式中的分母(em)和分子(ez) $em = 0; $ez = 0; for ($i = 0; $i < count($x); $i++) { //分母求和 $em += (($x[$i] - $ax) * ($y[$i] - $ay)); //分子求和 $ez += pow(($x[$i] - $ax), 2); }
//斜率0.69 echo $em/$ez;
//第十一个点预测负载值58.34 echo $em/$ez * 10 + $ay - ($em/$ez)*$ax;
理想状况下,将负载维持到一个稳定的值,使得设备使用率达到最高,且业务稳定正常,是一个长期的调整过程,通过不断的增减设备--增加设备以降低负载,减少设备以提高设备使用率,降低设备成本。这是一个多方面的协调工作,不是一个负载监控系统能解决的,但是负载监控提供基础的数据支持,可大大提高业务稳定性,减少突发故障,从而提高业务可用性。这里基本需要一些辅助功能的支持:
- 通过每日高、低负载设备数累计季度总高、低负载设备数来考核运维人员,以便及时处理高、低负载设备,将集群负载维持在一个相对稳定的范围,并消除明显的负载不均衡状况;
- 每日处理重点业务高负载设备,或者负载异常设备,提高业务稳定性。通常负载异常往往能反应软件故障,如CPU使用率一直100%而流量非常低,则可能是软件BUG导致,及时推动开发人员处理软件BUG或者优化软件以提高设备使用率和增加业务可用性;
- 定时、有计划的(如一个月一次)对高负载集群进行设备扩充,能大大降低临时扩充设备的维护成本,并减少临时资源池设备量以降低设备成本;
- 定时对低负载集群进行合并、下线,减少集群数从而减少管理单元,并增加设备利用率以降低设备成本;
- 系统建设初期还会涉及到覆盖率问题,及时分享业务的负载监控覆盖率,推动业务运维接入,以便能实现100%覆盖,以提高监控能力。
那么,在系统建设过程中还会碰到哪些问题呢?可能基础数据准确性是个比较重要的问题。由于单机设备硬件基础指标在一天内波动可能会比较大,所以需要对一天所采集到的基础数据进行处理,如消峰、去毛刺,将一些明显异常点去除,取一个较高点做为采集结果数据,以免得到一些高得恐怖的负载值。负载监控在实时性要求上并没有特别的高,对于长期优化目标来看,只需要按天粒度即可,当然由于其计算的合理性,逐渐提高其监控及时性,如按小时监控粒度,以便能更及时的了解到业务运行状况,这种情况一般用在业务放量、新业务上线、设备扩充后的负载实时监控上,以便作出更快的反应。
另外在集群的划分、归属、分类、合并、共享上,也就是基础配置、关系数据上需要比较细致的维护,目标是做到尽可能的标准化,各个集群既要功能单一独立,在横向上具有强的可扩充性(图1横向),又要能够提供公用以提高设备复用率,如多个集群的合并(图1纵向)。这个涉及到各个业务逻辑的设计,推动业务逻辑按照这种方向进行部署,这样在自动扩容上能达到更好的效果。当集群负载达到一定的数值,会自动调度设备缓冲池里的设备,根据已有的集群内设备的软件配置,自动初始化并接入业务运营,以达到设备自动调度扩充的能力。
负载监控作为一个长期性和及时性兼顾的监控系统,不仅在提高业务长期稳定性上发挥重要作用,更在预算、成本优化上提供了非常有力的数据支持,而且在未来自动调度扩容的可行性上给出了明朗的答案,是一个衔接业务监控和基础硬件监控的重要基础监控系统。
(待续……)
原文:http://www.phpfans.org/?p=83
本文链接:http://www.blueidea.com/tech/program/2010/7508.asp
出处:蓝色理想
责任编辑:bluehearts
上一页 WEB监控体系之设备负载监控 [2] 下一页
◎进入论坛网络编程版块参加讨论
|