實(shí)際上負(fù)載監(jiān)控的作用遠(yuǎn)遠(yuǎn)高于其起初設(shè)計(jì)目標(biāo)。隨著業(yè)務(wù)的增長(zhǎng),可以看到集群負(fù)載也隨之增長(zhǎng),雖然有波動(dòng),但是通過(guò)計(jì)算后仍會(huì)隨著業(yè)務(wù)增長(zhǎng)表現(xiàn)出增長(zhǎng)趨勢(shì),那么系統(tǒng)就可以根據(jù)近一段時(shí)間內(nèi)的負(fù)載增長(zhǎng)狀況,結(jié)合業(yè)務(wù)實(shí)際增長(zhǎng)狀況,預(yù)測(cè)出未來(lái)該集群所要達(dá)到的負(fù)載值,當(dāng)超過(guò)一個(gè)臨界值的時(shí)候(如80%負(fù)載),可以有計(jì)劃的實(shí)行擴(kuò)容操作(增加設(shè)備),而不是等到業(yè)務(wù)突然呈現(xiàn)高負(fù)荷、穩(wěn)定性降低的時(shí)候,才緊急進(jìn)行設(shè)備擴(kuò)充。
關(guān)于負(fù)載預(yù)測(cè),我在之前有提到過(guò),我是使用線性回歸方法計(jì)算的,其中最小二乘法計(jì)算公式如下:
最小二乘法公式
下面代碼簡(jiǎn)單枚舉歷史10個(gè)點(diǎn)來(lái)計(jì)算該設(shè)備負(fù)載增長(zhǎng)率:
//Y坐標(biāo)值表示設(shè)備歷史負(fù)載 $y = array(52.09, 52.4, 53.29, 54.22, 55.15, 55.83, 56.89, 56.98, 57.55, 57.8);
//X坐標(biāo)值表示順序天數(shù) $x = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//計(jì)算X和Y均值 $ax = array_sum($x)/count($x); $ay = array_sum($y)/count($y);
//計(jì)算斜率公式中的分母(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;
//第十一個(gè)點(diǎn)預(yù)測(cè)負(fù)載值58.34 echo $em/$ez * 10 + $ay - ($em/$ez)*$ax;
理想狀況下,將負(fù)載維持到一個(gè)穩(wěn)定的值,使得設(shè)備使用率達(dá)到最高,且業(yè)務(wù)穩(wěn)定正常,是一個(gè)長(zhǎng)期的調(diào)整過(guò)程,通過(guò)不斷的增減設(shè)備--增加設(shè)備以降低負(fù)載,減少設(shè)備以提高設(shè)備使用率,降低設(shè)備成本。這是一個(gè)多方面的協(xié)調(diào)工作,不是一個(gè)負(fù)載監(jiān)控系統(tǒng)能解決的,但是負(fù)載監(jiān)控提供基礎(chǔ)的數(shù)據(jù)支持,可大大提高業(yè)務(wù)穩(wěn)定性,減少突發(fā)故障,從而提高業(yè)務(wù)可用性。這里基本需要一些輔助功能的支持:
- 通過(guò)每日高、低負(fù)載設(shè)備數(shù)累計(jì)季度總高、低負(fù)載設(shè)備數(shù)來(lái)考核運(yùn)維人員,以便及時(shí)處理高、低負(fù)載設(shè)備,將集群負(fù)載維持在一個(gè)相對(duì)穩(wěn)定的范圍,并消除明顯的負(fù)載不均衡狀況;
- 每日處理重點(diǎn)業(yè)務(wù)高負(fù)載設(shè)備,或者負(fù)載異常設(shè)備,提高業(yè)務(wù)穩(wěn)定性。通常負(fù)載異常往往能反應(yīng)軟件故障,如CPU使用率一直100%而流量非常低,則可能是軟件BUG導(dǎo)致,及時(shí)推動(dòng)開(kāi)發(fā)人員處理軟件BUG或者優(yōu)化軟件以提高設(shè)備使用率和增加業(yè)務(wù)可用性;
- 定時(shí)、有計(jì)劃的(如一個(gè)月一次)對(duì)高負(fù)載集群進(jìn)行設(shè)備擴(kuò)充,能大大降低臨時(shí)擴(kuò)充設(shè)備的維護(hù)成本,并減少臨時(shí)資源池設(shè)備量以降低設(shè)備成本;
- 定時(shí)對(duì)低負(fù)載集群進(jìn)行合并、下線,減少集群數(shù)從而減少管理單元,并增加設(shè)備利用率以降低設(shè)備成本;
- 系統(tǒng)建設(shè)初期還會(huì)涉及到覆蓋率問(wèn)題,及時(shí)分享業(yè)務(wù)的負(fù)載監(jiān)控覆蓋率,推動(dòng)業(yè)務(wù)運(yùn)維接入,以便能實(shí)現(xiàn)100%覆蓋,以提高監(jiān)控能力。
那么,在系統(tǒng)建設(shè)過(guò)程中還會(huì)碰到哪些問(wèn)題呢?可能基礎(chǔ)數(shù)據(jù)準(zhǔn)確性是個(gè)比較重要的問(wèn)題。由于單機(jī)設(shè)備硬件基礎(chǔ)指標(biāo)在一天內(nèi)波動(dòng)可能會(huì)比較大,所以需要對(duì)一天所采集到的基礎(chǔ)數(shù)據(jù)進(jìn)行處理,如消峰、去毛刺,將一些明顯異常點(diǎn)去除,取一個(gè)較高點(diǎn)做為采集結(jié)果數(shù)據(jù),以免得到一些高得恐怖的負(fù)載值。負(fù)載監(jiān)控在實(shí)時(shí)性要求上并沒(méi)有特別的高,對(duì)于長(zhǎng)期優(yōu)化目標(biāo)來(lái)看,只需要按天粒度即可,當(dāng)然由于其計(jì)算的合理性,逐漸提高其監(jiān)控及時(shí)性,如按小時(shí)監(jiān)控粒度,以便能更及時(shí)的了解到業(yè)務(wù)運(yùn)行狀況,這種情況一般用在業(yè)務(wù)放量、新業(yè)務(wù)上線、設(shè)備擴(kuò)充后的負(fù)載實(shí)時(shí)監(jiān)控上,以便作出更快的反應(yīng)。
另外在集群的劃分、歸屬、分類、合并、共享上,也就是基礎(chǔ)配置、關(guān)系數(shù)據(jù)上需要比較細(xì)致的維護(hù),目標(biāo)是做到盡可能的標(biāo)準(zhǔn)化,各個(gè)集群既要功能單一獨(dú)立,在橫向上具有強(qiáng)的可擴(kuò)充性(圖1橫向),又要能夠提供公用以提高設(shè)備復(fù)用率,如多個(gè)集群的合并(圖1縱向)。這個(gè)涉及到各個(gè)業(yè)務(wù)邏輯的設(shè)計(jì),推動(dòng)業(yè)務(wù)邏輯按照這種方向進(jìn)行部署,這樣在自動(dòng)擴(kuò)容上能達(dá)到更好的效果。當(dāng)集群負(fù)載達(dá)到一定的數(shù)值,會(huì)自動(dòng)調(diào)度設(shè)備緩沖池里的設(shè)備,根據(jù)已有的集群內(nèi)設(shè)備的軟件配置,自動(dòng)初始化并接入業(yè)務(wù)運(yùn)營(yíng),以達(dá)到設(shè)備自動(dòng)調(diào)度擴(kuò)充的能力。
負(fù)載監(jiān)控作為一個(gè)長(zhǎng)期性和及時(shí)性兼顧的監(jiān)控系統(tǒng),不僅在提高業(yè)務(wù)長(zhǎng)期穩(wěn)定性上發(fā)揮重要作用,更在預(yù)算、成本優(yōu)化上提供了非常有力的數(shù)據(jù)支持,而且在未來(lái)自動(dòng)調(diào)度擴(kuò)容的可行性上給出了明朗的答案,是一個(gè)銜接業(yè)務(wù)監(jiān)控和基礎(chǔ)硬件監(jiān)控的重要基礎(chǔ)監(jiān)控系統(tǒng)。
(待續(xù)……)
原文:http://www.phpfans.org/?p=83
本文鏈接:http://m.95time.cn/tech/program/2010/7508.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁(yè) WEB監(jiān)控體系之設(shè)備負(fù)載監(jiān)控 [2] 下一頁(yè)
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|