張華,陳會飛(中國移動(深圳)有限公司,深圳 518048)
基于歷史數據的系統隱患預測研究
張華,陳會飛
(中國移動(深圳)有限公司,深圳 518048)
摘 要基于平臺自身歷史表現,結合LOESS擬合、TBRM擬合以及DTW 3種算法,提出一種平臺性能隱患預測方法,達到準確預測平臺層面資源波動異常的目的。實踐表明,該方法準確有效,在實際使用中取得了良好效果。
關鍵詞性能隱患;性能閥值監測;LOESS擬合;TBRM擬合;DTW算法
運營系統作為一個公司正常運轉的命脈,保障其穩定運行是重中之重。各公司通過建立平臺資源監控系統,按照固定的頻率(例如:5分鐘/輪次)對選取的平臺關鍵性能指標進行采集,依據指標的變化情況來判定運營系統平臺層面的運行情況。
從影響系統穩定運行的原因看,主要分為3類:一是配置故障,指的是系統因網絡配置等非系統本身原因導致無法訪問,此情況主要是人為原因導致且具有偶然性。二是硬件故障,指系統硬件層面突然損壞導致系統無法訪問,例如主機板卡損壞、內存損壞等,此類情況通常在故障前僅有少量告警信息,且出現較為突然,一般無法進行預測。三是性能異常,指短時間內并發訪問用戶量過高或者應用存在缺陷,造成業務訪問響應緩慢,在平臺層面表現為某些性能指標走勢突然變壞。
前兩種情況,會造成系統使用中斷,監控系統會第一時間發現并介入處理。但對第三種情況,在業務性能出現拐點前,通常平臺資源層面最先有性能指標異常出現。那么怎樣才能在平臺層面性能變壞時進行準確預警呢?業內常用的是性能閥值檢測法,但此方法缺點明顯,告警量大,難于篩選有效信息,告警有效率不高。本文基于平臺自身歷史表現,結合LOESS擬合、TBRM擬合以及DTW 3種算法,提出一種系統性能隱患預測方法,結合平臺資源使用現狀以及平臺自身特性,形成對系統內平臺資源的評價標準,分析找到出現性能隱患的平臺對象和隱患時間點,達到預測性能隱患的目的。
性能閥值檢測法主要是針對平臺資源性能指標定義統一的告警閥值區間,當達到某個閥值區間時,觸發相應等級的告警規則,認定系統存在性能問題。如表1所示為針對某系統的告警閥值樣表,這種方法閥值區間的設置依賴于經驗值或歷史數據均值。其中,指標類型為正向表示該性能指標值越高平臺對象性能越好,指標類型為反向表示該性能指標值越低平臺對象性能越好。例如在滿足用戶訪問的情況下,性能指標“數據緩存讀命中率”越高表示性能越好,故此為正向性能指標;性能指標“主機CPU利用率”越低表示性能越好,故此為
反向性能指標。

表1 告警閥值樣表
該方法問題在于無法正確反映系統性能層面的問題,主要有3點:一是不適合現狀。為最大化利用系統平臺資源,多數系統內資源占用率均比較高,但業務層面運行較為穩定,直接從資源占用率高就認定系統性能存在問題較為武斷。二是告警觸發情況較多,發現性能問題卻較少。當資源多次在閥值上下進行波動時,會多次觸發告警。三是告警閥值較為固定,不利于發現性能問題。例如定義CPU利用率閥值為80%,某臺主機平時資源占用為30%,某天突然上升至75%,此時應該是一個性能隱患,需要重點關注,但性能閥值檢測法卻無法發現。
更進一步的方法,是在告警閥值的基礎上定義一段時間內達到告警閥值的次數或者一段時間內告警量達到一定比例,如果達到即認為性能存在隱患,需要介入處理。此改進方式解決了資源占用率反復波動導致大量告警的情況,但對告警次數或者告警比例的定義仍然依賴于經驗值,另外對資源持續上升等異常情況仍然無法監測。
2.1預測原理介紹
在系統穩定運行情況下,平臺層面多數性能指標均是在一定范圍內進行周期性線性波動。使用一段時間內某個指標的采集數據繪制日折線圖,可以觀測到以下規律,性能指標多數數據均在一個波動上下線內,且每天性能指標形成的折線走勢基本相同,即性能和時間存在對應關系:
y=f(x)+ε,ε~N(0,σ2)
這里y為性能,x為每日的時間點,ε為每天的波動且服從均值為0,方差為σ2的正態分布。
當異常發生時,會出現以下兩種情況:一是性能指標數據波動超出歷史波動范圍;二是性能指標當前線性走勢和以往同時段走勢表現不一致。故當兩種情況均發生時,即可認定當前存在性能隱患。
本方法選取以下兩類共4種異常波動情況作為模型建立依據。如圖1的圖形中,①代表歷史波動下限,②代表歷史波動上限, ③代表歷史擬合日曲線,④、⑤代表兩種異常波動走勢。
類型1當前采集性能指標數據超出歷史擬合范圍并穩定在一定范圍內。圖中線⑤為反向指標示例,線④為正向指標示例。

圖1 異常類型1正反向指標示例
類型2 當前采集性能指標數據超出歷史擬合范圍且呈偏離走勢。圖2中線⑤為反向指標示例,線④為正向指標示例。

圖2 異常類型2正反向指標示例
2.2相關算法介紹
2.2.1 擬合算法
(1)LOESS擬合(非線性局部多項式擬合)
該算法為統計分析中對趨勢擬合的一種常用非線性回歸算法[1~5]。主要思想是選取二維變量數據(例如:采集時間點和平臺性能指標值兩個變量)中一定比例的數據,進行集中擬合得到多項式回歸曲線,從而得到數據在局部展現出來的規律和趨勢。本方法在擬合過程中采用穩健的距離加權方法,消除異常值對整體回歸的過大影響,然后根據整體的波動情況,計算出波動方差,依據一定概率計算得到歷史波動上下限。
(2)TBRM擬合(Tukey's 2次權重穩健均值)
該算法是對一組數據求穩健均值的方法。當每日采集性能指標數據的時間點相對固定的情況下,可將一段時間范圍的采集數據歸為同一時刻來處理,可更加敏感地計算平臺性能數據的趨勢變化情況,可以作為對LOESS擬合算法的一個補充,以便更加敏感地發現問題。計算方法如下:
m=y中值的絕對值;
cutoff=6×m異常范圍參數是9;
T(X)=(1-(X/cutoff)2)2 if abs(X)<cutoff(默認T(X)為權重)T(X)=0,如果abs(X)≥ cutoff。
擬合算法使用說明:
為檢測性能數據的異常變化,在滿足穩定情況下,利用LOESS和TBRM兩個算法對性能數據做日周期性擬合以得到歷史擬合日曲線,然后利用正態分布得到合理的歷史波動上下線閥值。LOESS和TBRM兩個算法在使用時均采用了穩健的計算方法,可較好的消除異常值對擬合效果的影響。但對某一個采集時間點來講,如果數據的采集時間比較固定且不同時刻相對波動范圍較大采用TBRM擬合算法,反之采用LOESS擬合算法。
(3)異常數據閥值確定
在實際系統運行過程中,由于各種因素的影響,采集的性能數據往往包含一定量的突變數據,導致數據走勢出現尖角,此類數據一般較少,但由于突變數據的幅值偏離真實值較大,如果直接參與模型計算,將降低模型的準確度,以此,突變數據的過濾是數據處理的重點。通常采用分位數的方法來判定多少比例的采集數據為異常。如圖3為主機CPU利用率直方圖使用示例,①表示有98.2%(占比0.982)的CPU利用率采集數據位于80%之下;②表示有99.2%(占比0.992)的CPU利用率采集數據位于90%之下; ③表示有99.5%(占比0.995)的CPU利用率采集數據位于95%之下。如果我們選擇異常概率為5/1 000,即表示認定5/1 000的數據為異常數據,結合圖例,表示CPU利用率低于99.5%的數據為正常,超出95%的5/1 000數據為異常需要舍棄。

圖3 主機CPU利用率直方圖使用示例

圖4 某主機CPU利用率日趨勢圖
圖4為使用一臺主機兩個月內CPU利用率數據繪制的日趨勢圖,其中,③為使用LOESS算法和TBRM算法得到的歷史擬合日曲線,假設歷史數據在擬合線
上線波動為正態分布的情況下,①和②是以正態分布1/1 000概率(六司格馬原理,以及實際情況調整)得到的波動上、下線閥值曲線,超出即為異常情況。
2.2.2 DTW算法(動態時間序列扭曲算法)
DTW算法(動態時間序列扭曲算法)是計算序列間相似度的著名算法[6~9],可以很好的計算兩個序列之間的大小、趨勢和性能波動之間的差異以及距離。
平臺性能指標日采集數據之間存在穩定的日周期性現象(或其他固定長度的性能比較),采用DTW算法做日周期的比對,可實時監控到性能異常變化。
2.3預測方法
2.3.1 預測流程說明
本模型為基于平臺性能指標的通用預測模型,沒有針對固定的某些指標。具體操作步驟如下:
(1)選取性能指標:選取以日為周期進行波動的平臺資源性能指標。
(2)采集歷史數據:選取該性能指標近兩個月的全量采集數據作為計算基礎。
(3)算法擬合:采用LOESS擬合和TBRM擬合兩種算法,并按照1/1 000的異常數據比率分析步驟2的性能指標數據。
(4)得到歷史范圍:依據步驟3計算結果得到該指標歷史波動上線和波動下線(對于大于合理范圍的數值,通常采用經驗值,不小于0.001,不大于0.995)。
(5) 采集當前一輪性能指標數據。
(6)判斷該數據是否超出歷史波動上下線,如果沒有超過,直接跳轉到步驟11。
(7)采用當前數據值以及之前多次采集數據值構建當前走勢折線。
(8)采用DTW算法,判斷當前走勢折線是否和上月同天采集數據形成的折線走勢一致(這里的對比周期長度可認為是每日或是一定長度的性能序列),如果一致,直接跳轉到步驟11。
(9)采用DTW算法,判斷當前走勢折線是否和上周同期采集數據形成的折線走勢一致,如果一致,直接跳轉到步驟11(上周同期指當前天減去7天所在日期)。
(10)流程走到本步驟標識該指標當前存在性能隱患,需要關注。
(11)是否繼續采集性能數據進行判定,如果繼續,返回步驟5繼續,否則流程結束。
2.3.2 歷史范圍計算
(1)計算CPU利用率日數據間的的相似度距離。
根據日周期現象,使用DTW算法(動態時間序列扭曲算法)對CPU利用率按照日為單位計算日與日之間的相似度距離(或者計算每日與擬合線的相似度差距,這里的對比周期長度可以說每日或是一定長度的性能序列)。
(2)對相似度距離做正態標準化,找出相似度不一致的標準。
利用步驟1得到的相似度距離,對指標數據進行正態標準化,利用小概率事情不會發生的假設找出異常數據的判斷標準。
(3)根據不一致的日期數量判斷數據穩定性情況。
根據步驟2得到的相似度標準,判斷一個周期(通常選擇近兩個月)內相似度距離的波動情況,計算得到集中程度,根據橫向比較確定閥值,以確定性能的變化趨勢是否是按日基本穩定的。
(4)計算擬合上下限。
在上述穩定條件下滿足時,做性能數據與時間的擬合,估計與時間相應的性能數值,并根據歷史表現情況,計算出數據的波動大小(擬合方差),將波動正態標準化,計算一定概率下的性能數據的波動范圍,計算出擬合的上限和下限,比如小于0.1%情況下,正常值的范圍應該是多大(在不穩定的情況依然可以做擬合,但是上下限可能會過大,可根據數據特征選取合理的數據做參考來左擬合和擬合的上下限)。
(5)根據擬合上下限和當前數據相似度比較,判斷性能是否發生了不正常的波動現象。
(6)根據擬合的范圍來判斷性能當前值是否發生了較大范圍的波動。
某公司在建立平臺資源監控系統基礎上,使用該模型實時分析關鍵性能指標數據,發現某主機內存利用率在8月內某天顯著走勢異常。經分析,發現新上線的業務模塊存在Java代碼編寫缺陷,占用內存資源無法釋放,導致該主機處理性能下降明顯;在進行代碼修改后,性能回復穩定。代碼修改前后的內存利用率折線如圖5所示。

圖5 模型應用效果示意圖
本文基于平臺性能歷史數據,提出一種性能隱患預測方法,彌補了性能拐點檢測法的不足。與性能拐點檢測法相比,本方法預測性能隱患更加準確有效。通過收集的系統運行歷史數據,在業務層面受到影響前主動預警,主動發現主動解決,使得平臺監控從資源的被動監控向主動的性能隱患監控轉變。
參考文獻
[1] 寧逸. 非參數局部多項式回歸估計模型的研究[D]. 秦皇島:燕山大學, 2010.
[2] 胡舒合. 非參數回歸函數估計的漸近正態性[J]. 數學學報,2002,45(3):433-442.
[3] 李丹寧, 穆錚, 石軍, 等. 基于非參數估計方法的滬銅期貨價格研究[J]. 經濟數學,2012,29(3):36-39.
[4] 譚建國. 基于深度函數的曲線擬合方法研究[D]. 天津:天津大學,2007.
[5] 左義君, 崔恒建. 統計深度函數及其應用(英文)[J]. 數學進展, 2004,33(1):3-27.
[6] 盧榮. 基于動態扭曲算法的時間序列部分周期模式挖掘研究[D]. 天津:天津大學, 2009.
[7] 董曉莉, 時間序列數據挖掘相似性度量和周期模式挖掘研究[D]. 天津:天津大學,2007.
[8] 羅風曼. 時間序列預測模型及其算法研究[D]. 成都:四川大學,2006.
[9] Jonathan D.Cryer, Kung-Sik Chan. 時間序列分析及應用:R語言(原書第2版)[D]. 潘紅宇(譯者), 等(譯者). 北京:機械工業出版社,2011.
Research on prediction of system hidden trouble based on historical data
ZHANG Hua, CHEN Hui-fei
(China Mobile (Shenzhen) Co., Ltd., Shenzhen 518048, China)
AbstractIn this paper, a platform performance hidden troubles prediction scheme was presented based on the historical performance of the platform itself combined with LOESS fitting, TBRM fitting and DTW algorithm to predict the abnormal fl uctuation of the platform resources correctly. Practice has proved that this scheme runs correctly and effectively and achieves good performance in use.
Keywordsperformance hidden trouble; performance threshold detecting; LOESS fi tting; TBRM fi tting; DTW algorithm
收稿日期:2015-09-16
中圖分類號TP391
文獻標識碼A
文章編號1008-5599(2015)11-0068-05