1.一種基于執(zhí)行軌跡追蹤的分布式軟件異常診斷方法,其特征在于包括以下步驟:
第一步:執(zhí)行軌跡監(jiān)測:利用動態(tài)插樁的方式,在分布式軟件的函數(shù)調(diào)用處插入監(jiān)測代碼,收集該函數(shù)的執(zhí)行信息,執(zhí)行信息包括該函數(shù)唯一標(biāo)識、處理時間、服務(wù)組件唯一標(biāo)識和遠(yuǎn)程調(diào)用協(xié)議中加入的該函數(shù)調(diào)用關(guān)系;根據(jù)以上函數(shù)的執(zhí)行信息利用調(diào)用樹描述函數(shù)的執(zhí)行序列,即執(zhí)行軌跡;
第二步:在覆蓋測試階段對分布式軟件進(jìn)行監(jiān)測,以構(gòu)建執(zhí)行軌跡的集合,上述執(zhí)行軌跡的集合構(gòu)建過程如下:
針對當(dāng)前的執(zhí)行軌跡,通過寬度優(yōu)先搜索的樹匹配算法與上述執(zhí)行軌跡的集合中已有的執(zhí)行軌跡進(jìn)行匹配;如果匹配成功,則繼續(xù)下一個執(zhí)行軌跡的匹配;如果匹配失敗,則在上述執(zhí)行軌跡的集合中新增當(dāng)前的執(zhí)行軌跡;
第三步:將第二步建立的執(zhí)行軌跡集合作為檢測分布式軟件的故障的基準(zhǔn),通過比較與分析監(jiān)測得到的當(dāng)前執(zhí)行軌跡與上述執(zhí)行軌跡集合中的執(zhí)行軌跡,以定位分布式軟件故障的原因;
將分布式軟件的故障分為系統(tǒng)錯誤故障和性能異常故障兩類,針對這兩類故障分別提出相應(yīng)的異常診斷方法,實(shí)現(xiàn)了函數(shù)粒度的故障定位。
2.根據(jù)權(quán)利要求1所述的基于執(zhí)行軌跡追蹤的分布式軟件異常診斷方法,其特征在于:所述第三步中,具體實(shí)現(xiàn)如下:
(1)在系統(tǒng)錯誤診斷方面
利用樹編輯距離來評估執(zhí)行軌跡的異常程度,通過對比分析歷史執(zhí)行軌跡的差異,定位發(fā)生錯誤的函數(shù)調(diào)用;
樹編輯距離為:
其中,Ti為監(jiān)測得到的當(dāng)前第i個執(zhí)行軌跡;Cj為執(zhí)行軌跡集合中的第j個基準(zhǔn)執(zhí)行軌跡;V(Ti)和V(Cj)分別為Ti和Cj中函數(shù)的數(shù)量;δ(Ti,Cj)為Ti和Cj的編輯距離;
Ti的異常程度AD:
AD=1-max(Sim(Ti,Cj));
如果AD大于預(yù)置的閥值γ,則表示該執(zhí)行軌跡發(fā)生了錯誤;
利用寬度優(yōu)先搜索比較Ti和Cj的軌跡差別,能夠定位到錯誤出現(xiàn)在分布式軟件的具體函數(shù);
(2)在性能異常診斷方面
執(zhí)行軌跡是由函數(shù)調(diào)用的序列組成,在確定出現(xiàn)性能異常的執(zhí)行軌跡后,利用主成分分析提取引起性能異常的函數(shù)調(diào)用,如果當(dāng)前執(zhí)行軌跡的執(zhí)行時間出現(xiàn)大幅度波動,則當(dāng)前執(zhí)行軌跡出現(xiàn)性能異常,利用變異系數(shù)來衡量執(zhí)行軌跡的執(zhí)行時間的波動程度:
其中:
其中,xi為第i個執(zhí)行軌跡的執(zhí)行時間;μ為該執(zhí)行軌跡的執(zhí)行時間的平均值;σ為該執(zhí)行軌跡的執(zhí)行時間的標(biāo)準(zhǔn)差;CV為執(zhí)行軌跡的執(zhí)行時間的標(biāo)準(zhǔn)差與均值的比值,表明分布式軟件的執(zhí)行軌跡的執(zhí)行時間波動幅度。
3.根據(jù)權(quán)利要求2所述的基于執(zhí)行軌跡追蹤的分布式軟件異常診斷方法,其特征在于:所述利用主成分分析定位造成執(zhí)行軌跡性能異常的函數(shù)調(diào)用的過程如下:
建立線性組合,如下式:
pi=ai1t1+…+aijtj+…+aintn
其中,pi表示主成分i;變量ti表示執(zhí)行軌跡中的第i個函數(shù)的執(zhí)行時間;aij表示主成分pi對于tj的系數(shù);n為該執(zhí)行軌跡中函數(shù)的個數(shù);
利用主成分分析計(jì)算得到k個主成分為p1,p2,..,pk,其對應(yīng)的特征值為λ1,λ2,...,λk,k<n為正整數(shù),計(jì)算執(zhí)行軌跡中各個函數(shù)j的權(quán)重對權(quán)重從大到小排序,選取值最大的m個權(quán)重,m<n為正整數(shù),所述權(quán)重所對應(yīng)的函數(shù)為引起執(zhí)行軌跡性能異常的原因。