張 衡,王大勇,宋 朋
(遼寧大學(xué),遼寧 沈陽 110036)
計算機技術(shù)的應(yīng)用領(lǐng)域日益廣泛,對計算機的可靠性要求也越來越高。尤其在一些特殊的應(yīng)用領(lǐng)域,例如在實驗室方面,對服務(wù)器的應(yīng)用性能要求更高?,F(xiàn)階段,計算機硬件已經(jīng)得到了很大程度的提升,但是軟件設(shè)計日益復(fù)雜,帶來了很多的潛在隱患。尤其是在比較特殊的環(huán)境下,都容易導(dǎo)致實驗室服務(wù)器出現(xiàn)故障[1,2],同時還會產(chǎn)生比較大的經(jīng)濟損失。
為了有效解決上述問題,國內(nèi)相關(guān)專家針對服務(wù)器故障診斷方面的內(nèi)容展開了大量研究,例如李奎等人[3]對聲音信號和振動信號經(jīng)驗?zāi)B(tài)分解處理,提取不同類型信號的IMF(固有模態(tài)函數(shù),Intrinsic Mode Function)包絡(luò)能量熵,將其設(shè)定為特征向量輸入,同時使用D-S(登普斯特-謝弗,Dempster-Shafer)證據(jù)理論對聲振信號加權(quán)概率分配完成決策層融合處理,最終獲取故障診斷結(jié)果。于斌等人[4]提出了一種基于并行運行時驗證的DoS(拒絕服務(wù),Denial of Service)攻擊檢測方法。描述邊緣服務(wù)器預(yù)期行為和DoS攻擊特征。采用并行運行時驗證框架,充分利用邊緣服務(wù)器的計算與存儲資源,對服務(wù)器程序運行狀態(tài)進行異常檢測和誤用檢測。在以上幾種方法的基礎(chǔ)上,提出一種基于改進FP-Growth算法的云服務(wù)器故障診斷方法。經(jīng)實驗測試結(jié)果表明,所提方法能夠得到更加精準(zhǔn)的服務(wù)器故障診斷結(jié)果。
FP-Growth算法的基本思想就是將事務(wù)數(shù)據(jù)庫中的事務(wù)開展剪枝以及排序等相關(guān)操作,有效保留各個數(shù)據(jù)項之間的關(guān)系[5]。以下給出FP-Growth算法的詳細(xì)操作步驟:
1)獲取頻繁項列表
對事務(wù)數(shù)據(jù)庫遍歷處理,主要負(fù)責(zé)完成數(shù)據(jù)庫中全部項數(shù)據(jù)統(tǒng)計工作,將小于最小尺度計數(shù)的數(shù)據(jù)項刪除,同時根據(jù)頻數(shù)遞減對數(shù)據(jù)項排序處理,進而獲取頻繁項列表。
2)建立FP-tree
以Null(零器)為根節(jié)點構(gòu)建FP-tree,通過Flist對數(shù)據(jù)庫中的全部數(shù)據(jù)項排序處理,將不滿足最小支持度的數(shù)據(jù)項刪除。將完成排序的事務(wù)插入到FP-tree中,判斷路徑是否可以分享,假設(shè)可以分享,則需要記錄節(jié)點數(shù)量。
3)挖掘FP-tree
設(shè)定后綴模式以及初始值,采用FP-tree算法挖掘FP-tree;假設(shè)FP-tree為單分支,則刪除小于最小支持度的節(jié)點,將剩余節(jié)點組成任務(wù)集合,經(jīng)過對比分析獲取對應(yīng)的頻繁項集。
經(jīng)典的FP-Growth算法[6,7]主要通過FP樹作為數(shù)據(jù)存儲結(jié)構(gòu),將數(shù)據(jù)庫事務(wù)集全部壓縮處理,同時存儲至FP-tree中,確保各個頻繁項之間的關(guān)系不會被打破。在實際操作過程中,并不會形成候選集,所以需要兩次掃描事務(wù)數(shù)據(jù)庫,有效避免時間浪費。將頻繁項集中出現(xiàn)的最小數(shù)據(jù)項設(shè)定為后綴,降低搜索時間。
由于傳統(tǒng)的FP-Growth算法挖掘數(shù)據(jù)規(guī)模比較小,而在實際應(yīng)用中的實驗室服務(wù)器數(shù)據(jù)存儲規(guī)模比較大,并且還在持續(xù)增加。如果超過單一架構(gòu)以及分布環(huán)境可以處理的數(shù)據(jù)規(guī)模,則各個節(jié)點之間的通信能耗和時間會大幅度增加。在上述分析基礎(chǔ)上,提出PL-FPGrowth(程序語言頻繁模式增長,Procedural Language-Frequent Pattern Growth)算法。用于統(tǒng)計數(shù)據(jù)項的頻數(shù),如式(1)所示
(1)
式中,count-I(i,j)代表頻數(shù);lm,n代表節(jié)點上數(shù)據(jù)項出現(xiàn)的總數(shù);i和j代表第i個和第j個節(jié)點。
4)在不同的節(jié)點上,通過頻繁項列表,需要對本地數(shù)據(jù)集中的事務(wù)排序處理,構(gòu)建對應(yīng)的局部FP-tree。
5)將局部的頻繁項集整合處理,假設(shè)頻繁項集相同,則增加頻數(shù);反之,則刪除支持度和置信度的頻繁項集,通過整合形成全局最大頻繁項集的集合。
針對實驗室服務(wù)器數(shù)據(jù)的特殊性,需要給出基于改進FP-Growth算法的云服務(wù)器故障診斷流程。分析實驗室服務(wù)器的實際工作情況,為了確保故障診斷結(jié)果的準(zhǔn)確性,在故障診斷前期,需要滿足以下幾方面的約束條件,如下所示:
1)確保數(shù)據(jù)結(jié)構(gòu)屬于非線性的;
2)確保數(shù)據(jù)的概率分布滿足指數(shù)型分布;
3)確保向量的方差大小和變量之間的重要性呈正相關(guān);
4)主元相互正交。
由于實驗服務(wù)器是復(fù)雜多變的,具有復(fù)雜多變以及非線性等特點,主要涉及多個不同的實驗設(shè)備,所以需要在事務(wù)數(shù)據(jù)庫中分別添加關(guān)鍵數(shù)據(jù),將其存放于關(guān)鍵項表中,將其設(shè)定為最終所挖掘的關(guān)聯(lián)規(guī)則輸出。
針對任何含有n個類別的分類問題而言,所以可以將其轉(zhuǎn)換為兩個類別的分類問題[8,9]。在頻繁項頭中主要包含兩個不同的域,通過圖1可知,F(xiàn)P-tree是利用兩次掃描數(shù)據(jù)庫得到的。
1)記錄全部頻繁項集的支持度和兩種類別的相對支持度。
2)輸入FP-tree,獲取各個子路徑上對應(yīng)節(jié)點集合的支持度和置信度,詳細(xì)的計算式如下
(2)
(3)
式中,support代表支持度;confidence代表置信度;count和relative分別代表不同的子路徑。
3)二次掃描,同時構(gòu)建相對支持樹,將項頭表按照從小到大的順序排序處理,進而構(gòu)建頻繁模式基。
利用圖1給出基于改進FP-Growth算法的云服務(wù)器故障診斷流程圖。
圖1 基于改進FP-Growth算法的云服務(wù)器故障診斷流程
由于經(jīng)典的FP-Growth算法[10,11]在挖掘關(guān)聯(lián)規(guī)則的過程中,和數(shù)據(jù)排列方式存在十分密切的關(guān)聯(lián)。為了得到全局最大頻繁項集,對局部事務(wù)排序仍然無法滿足局部頻繁項集,進而獲取目標(biāo)頻繁項集。設(shè)定參與計算的節(jié)點數(shù)量為m,最小支持度為min-sup,則各個節(jié)點對應(yīng)的局部支持度計數(shù)可以表示為式(4)所示
sup-local=min-sup ·qi
(4)
上式中,sup-local代表局部支持度計數(shù);qi代表節(jié)點事務(wù)集總數(shù)。
在完成剪枝操作之后,會降低構(gòu)建局部FP-tree和局部挖掘頻繁項集的工作量。在刪除不滿足最小支持度計數(shù)的頻繁項之后,在挖掘全局最大頻繁項集時[12,13],會有效降低通信開銷。
為了準(zhǔn)確評估不同節(jié)點對應(yīng)參考時間,可以采用式(5)計算
(5)
式中,excute-time(i)代表第i個節(jié)點對應(yīng)的執(zhí)行參考時間[14,15];time(i)代表節(jié)點i的運行時間;n代表測試樣本數(shù)量;ωi,j代表不同節(jié)點的權(quán)重取值。
計算服務(wù)器故障比例如式(5)所示:
(6)
上式中,date-proportion代表節(jié)點數(shù)據(jù)的分配比例。
在以上分析的基礎(chǔ)上,還需要設(shè)定參數(shù)閾值規(guī)則,進而提取實驗室中不同服務(wù)器的故障向量變量的子集,以此為依據(jù)組建不同故障變量的條件FP-tree,將各個數(shù)據(jù)子集挖掘出的頻繁項集求并集,得到包含全部故障診斷信息的頻繁項集,最終達(dá)到服務(wù)器故障診斷的目的。
為了驗證所提方法的有效性,采用文獻(xiàn)[3]的基于多信息融合的故障診斷方法和文獻(xiàn)[4]的基于運行時驗證的邊緣服務(wù)器DoS攻擊檢測方法作為實驗對照組,將其與研究方法的測試結(jié)果對比,以突出提出方法的指標(biāo)優(yōu)勢。
選取4核8G5M帶寬的云服務(wù)器為實驗測試對象,該服務(wù)器具備雙IP,設(shè)置云服務(wù)器的故障發(fā)生在運行時間為5s~10s和15s~20s兩個時間段,當(dāng)服務(wù)器出現(xiàn)故障時,其數(shù)據(jù)通信量會發(fā)生較大幅度的變化。分別利用三種不同方法診斷該服務(wù)區(qū)的故障,所得結(jié)果如圖2所示。
圖2 不同方法下服務(wù)器故障輸出結(jié)果
根據(jù)圖2的實驗結(jié)果可知,基于多信息融合的故障診斷方法和基于運行時驗證的邊緣服務(wù)器DoS攻擊檢測方法的服務(wù)器故障診斷存在較為明顯的延時問題。研究方法能夠精準(zhǔn)的獲取云服務(wù)器的故障,且在故障發(fā)生階段,服務(wù)器的通信量下降,且幅度較大,符合實際情況。
基于上述實驗,選取故障診斷耗時和診斷正確性作為測試指標(biāo)。不同方法的云服務(wù)器故障診斷耗時測試結(jié)果如圖3所示。
圖3 不同方法的故障診斷耗時對比
分析圖3中的實驗數(shù)據(jù)可知,所提方法的云服務(wù)器故障診斷準(zhǔn)確率明顯優(yōu)于文獻(xiàn)方法,說明所提方法可以獲取更加滿意的故障診斷結(jié)果。
基于云服務(wù)器故障診斷的耗時指標(biāo)測試結(jié)果,進一步分析三種不同方法的故障診斷性能結(jié)果,設(shè)置4個故障類型,分別為服務(wù)暫停、服務(wù)停止、進程異常、指令執(zhí)行異常。利用基于多信息融合的故障診斷方法、基于運行時驗證的邊緣服務(wù)器DoS攻擊檢測方法以及研究方法對40個服務(wù)器樣本完成故障診斷,具體結(jié)果如圖4所示。
圖4 不同方法的云服務(wù)器故障診斷結(jié)果
分析圖4所得的實驗結(jié)果可知,在對4個類別的云服務(wù)器故障進行診斷時,基于多信息融合的故障診斷方法和基于運行時驗證的邊緣服務(wù)器DoS攻擊檢測方法在每一個類別的服務(wù)器故障診斷中均出現(xiàn)了錯誤診斷結(jié)果,說明文獻(xiàn)方法的故障診斷精度不夠理想。研究方法在對40個服務(wù)器樣本的不同類型故障診斷中,僅出現(xiàn)一次錯誤診斷。
為了更直觀對比不同方法故障診斷結(jié)果的精度,對以上方法的準(zhǔn)確率數(shù)值進行計算,公式如下所示
(7)
式中,c代表正確判斷的故障類型數(shù)量;b代表實際故障數(shù)量。
根據(jù)圖4的實驗結(jié)果,計算不同方法的故障診斷精度,具體精度數(shù)據(jù)如圖5所示。
圖5 不同方法的故障診斷精度計算結(jié)果
根據(jù)圖5的不同方法的故障診斷精度對比可以明顯看出,對于不同類型的云服務(wù)器故障,研究方法的精度始終保持在90%~100%,基于多信息融合的故障診斷方法和基于運行時驗證的邊緣服務(wù)器DoS攻擊檢測方法的故障診斷精度波動范圍在80%~90%,明顯低于研究方法。該實驗結(jié)果驗證了所提方法具有更高的服務(wù)器故障診斷結(jié)果準(zhǔn)確性,可以準(zhǔn)確識別各個類型的故障,進一步證明了所提方法的優(yōu)越性。
提出一種基于改進FP-Growth算法的云服務(wù)器故障診斷方法。經(jīng)實驗測試證明,所提方法可以準(zhǔn)確診斷實驗室中各個類型的服務(wù)器故障,為服務(wù)器故障的研究和應(yīng)用提供了全新的方法,確保系統(tǒng)的穩(wěn)定運行。