• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于人工智能方法的數(shù)據(jù)庫(kù)智能診斷?

      2021-05-23 13:17:24金連源李國(guó)良
      軟件學(xué)報(bào) 2021年3期
      關(guān)鍵詞:根因監(jiān)控數(shù)據(jù)庫(kù)

      金連源,李國(guó)良

      (清華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,北京 100084)

      IT 運(yùn)維,指的是和IT 服務(wù)管理相關(guān)的人員及管理過(guò)程,IT 運(yùn)維可以讓公司提供的服務(wù)保持良好的質(zhì)量,并且使服務(wù)達(dá)到用戶付款后的預(yù)期.運(yùn)維在人類未來(lái)的生產(chǎn)生活中的作用會(huì)越來(lái)越重要.2017 年,清華大學(xué)裴丹提出“預(yù)計(jì)到2020 年,全球?qū)⒂?00 億到1 000 億的IT 設(shè)備,這些設(shè)備會(huì)承載無(wú)數(shù)的服務(wù),覆蓋互聯(lián)網(wǎng)、金融、物聯(lián)網(wǎng)、智能制造、電信、電力網(wǎng)絡(luò)、政府等等的生產(chǎn)生活的方方面面”(https://yq.aliyun.com/articles/272155).在運(yùn)維發(fā)展的過(guò)程中,最先出現(xiàn)的是依靠手工的運(yùn)維;后來(lái),人們把重復(fù)的手工操作代碼化,基于大量腳本的自動(dòng)化運(yùn)維就開(kāi)始流行了起來(lái);其后又出現(xiàn)了DevOps 和智能運(yùn)維[1].智能運(yùn)維,指的是使用大數(shù)據(jù)、機(jī)器學(xué)習(xí)技術(shù)來(lái)支持IT 運(yùn)維.機(jī)器學(xué)習(xí)可以處理海量的監(jiān)控?cái)?shù)據(jù)并且提供強(qiáng)大的推斷能力.目前已經(jīng)有許多公司和研究機(jī)構(gòu)使用智能運(yùn)維技術(shù)在許多方向取得了非常顯著的進(jìn)展,包括云數(shù)據(jù)庫(kù)服務(wù)質(zhì)量分析[2]、磁盤(pán)故障的預(yù)測(cè)[3]、微服務(wù)故障的定位[4]等等.

      數(shù)據(jù)庫(kù)是各種企業(yè)常用的系統(tǒng)軟件,根據(jù)所執(zhí)行任務(wù)的不同,可以將數(shù)據(jù)庫(kù)分為執(zhí)行大量簡(jiǎn)單事務(wù)的OLTP 型數(shù)據(jù)庫(kù)、執(zhí)行復(fù)雜分析任務(wù)OLAP 型數(shù)據(jù)庫(kù)和兼顧執(zhí)行上述兩種任務(wù)的TATP 型數(shù)據(jù)庫(kù).作為一種傳統(tǒng)的系統(tǒng)軟件,近年來(lái)出現(xiàn)了許多利用人工智能技術(shù)優(yōu)化數(shù)據(jù)庫(kù)部件的工作[5],可以發(fā)現(xiàn),人工智能技術(shù)賦能的數(shù)據(jù)庫(kù)具有更加強(qiáng)大的綜合能力,智能運(yùn)維技術(shù)在數(shù)據(jù)庫(kù)領(lǐng)域也有著廣泛的應(yīng)用場(chǎng)景.

      本研究聚焦于智能運(yùn)維中的OLTP 環(huán)境數(shù)據(jù)庫(kù)性能異常監(jiān)測(cè)診斷,在數(shù)據(jù)庫(kù)性能下降時(shí)發(fā)現(xiàn)問(wèn)題并診斷問(wèn)題發(fā)生的根因.該問(wèn)題有如下幾個(gè)難點(diǎn).

      ? 監(jiān)控指標(biāo)和數(shù)據(jù)庫(kù)性能異常之間的對(duì)應(yīng)關(guān)系比較復(fù)雜,一種根因所引發(fā)的異常往往會(huì)導(dǎo)致多個(gè)監(jiān)控指標(biāo)出現(xiàn)問(wèn)題,而單個(gè)監(jiān)控指標(biāo)的異常可能由不同的根因所導(dǎo)致的.此外,系統(tǒng)中會(huì)存在數(shù)百個(gè)指標(biāo),因此,采用簡(jiǎn)單的規(guī)則來(lái)進(jìn)行數(shù)據(jù)庫(kù)異常診斷精確度不高;

      ? OLTP 環(huán)境下的數(shù)據(jù)庫(kù)執(zhí)行的是大量簡(jiǎn)單的事務(wù),如果監(jiān)控指標(biāo)數(shù)據(jù)成本較大,可能會(huì)使執(zhí)行時(shí)間較短的事務(wù)變慢,帶來(lái)數(shù)據(jù)庫(kù)性能下降的問(wèn)題;

      ? 由于OLTP 任務(wù)請(qǐng)求的不穩(wěn)定性以及操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)的復(fù)雜性,監(jiān)控指標(biāo)中會(huì)有許多噪音,在這類監(jiān)控指標(biāo)中提取有用信息難度較大.

      下面是關(guān)于第一個(gè)難點(diǎn)的一個(gè)具體案例:當(dāng)我們執(zhí)行數(shù)據(jù)庫(kù)備份操作的時(shí)候,我們觀察到了很多指標(biāo)均產(chǎn)生了異常,其中包括了CPU、I/O、中斷計(jì)數(shù),數(shù)據(jù)庫(kù)等待進(jìn)程等等,如圖1 所示.

      Fig.1 Anomaly metrics triggered by database backup圖1 數(shù)據(jù)庫(kù)備份引發(fā)的監(jiān)控指標(biāo)異常

      同一個(gè)指標(biāo)的異??赡苁怯刹煌母蛩斐傻?我們以CPU 統(tǒng)計(jì)指標(biāo)舉例,可以看到:在外部進(jìn)程搶占CPU、數(shù)據(jù)庫(kù)備份和數(shù)據(jù)庫(kù)外部文件導(dǎo)入這3 個(gè)根因下,CPU 的指標(biāo)均產(chǎn)生了異常.

      圖2 展示了在3 種異常觸發(fā)的時(shí)候,CPU 指標(biāo)變化的示意圖.這是因?yàn)橐陨? 個(gè)行為均需要計(jì)算機(jī)提供較高的計(jì)算資源.通過(guò)可視化我們發(fā)現(xiàn),其他很多的指標(biāo)均存在著相似的性質(zhì).因此,我們很難從單個(gè)異常的指標(biāo)去推定數(shù)據(jù)庫(kù)性能異常問(wèn)題的根因.

      Fig.2 CPU metrics under different anomaly cases圖2 不同異常下,CPU 監(jiān)控指標(biāo)

      已有的數(shù)據(jù)庫(kù)異常診斷方法并不完全適用于我們的問(wèn)題,這些方法中有的過(guò)于依賴專家知識(shí),需要依靠有經(jīng)驗(yàn)DBA 設(shè)計(jì)模型[6],并且這些模型只適用于一種數(shù)據(jù)庫(kù),不具備遷移性;還有的需要通過(guò)修改數(shù)據(jù)庫(kù)系統(tǒng)源代碼的方式獲取細(xì)粒度監(jiān)控信息[7],雖然提高了診斷的精度,但是這樣既增加了開(kāi)銷,也帶來(lái)更大的系統(tǒng)維護(hù)成本.

      針對(duì)以上的問(wèn)題,本文作者提出了一種自動(dòng)、輕量級(jí)的監(jiān)控診斷框架AutoMonitor.通過(guò)模擬數(shù)據(jù)庫(kù)故障分析挖掘數(shù)據(jù)庫(kù)性能故障下的一系列監(jiān)控指標(biāo)所表現(xiàn)出來(lái)的特征,使用基于深度循環(huán)神經(jīng)網(wǎng)絡(luò)的模型完成對(duì)數(shù)據(jù)庫(kù)性能異常的監(jiān)控.在這里,循環(huán)神經(jīng)網(wǎng)絡(luò)能以較低的成本和較快的速度完成對(duì)時(shí)序數(shù)據(jù)進(jìn)行建模,并捕捉不同監(jiān)控指標(biāo)之間的相關(guān)性,進(jìn)而實(shí)現(xiàn)高質(zhì)量的異常監(jiān)測(cè).針對(duì)監(jiān)控指標(biāo)的數(shù)據(jù)特點(diǎn),提出了基于Kolmogorov-Smirnov 檢驗(yàn)的異常指標(biāo)提取算法.該方法利用異常時(shí)序數(shù)據(jù)統(tǒng)計(jì)分布的差異來(lái)判斷是否為異常監(jiān)控指標(biāo),模擬人眼判斷異常的過(guò)程,并且有一定的魯棒性.最后,我們使用優(yōu)化的K近鄰算法挖掘了異常監(jiān)控指標(biāo)和異常根因之間的對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)了數(shù)據(jù)庫(kù)異常根因診斷.相比于其他方法,我們這種基于特征距離比較的方法不僅利用了所有監(jiān)控指標(biāo)信息,而且還考慮到了不同監(jiān)控指標(biāo)的重要性,因而具有更高的診斷精度.

      本文第1 節(jié)是相關(guān)工作的介紹.第2 節(jié)是論文總體研究方案的介紹.第3 節(jié)是論文所使用到的算法的具體描述.第4 節(jié)是關(guān)于實(shí)驗(yàn)結(jié)果展示和分析.第5 節(jié)是對(duì)于本文的總結(jié).

      1 相關(guān)工作

      國(guó)內(nèi)外有許多關(guān)于系統(tǒng)性能診斷的研究工作,針對(duì)系統(tǒng)面向不同的任務(wù),我們將這些工作分成面向OLTP環(huán)境和面向OLAP 環(huán)境這兩個(gè)大類上面.OLTP 環(huán)境下,單條SQL 比較簡(jiǎn)單,執(zhí)行的時(shí)間也比較短.因此,面向OLTP 環(huán)境的自診斷方法考慮整體工作負(fù)載的性能問(wèn)題.OLAP 環(huán)境下,SQL 語(yǔ)句比較復(fù)雜,因此診斷時(shí)主要考慮單條SQL 語(yǔ)句的執(zhí)行效率問(wèn)題.

      根據(jù)自診斷方法的不同,我們可以將自診斷方法分成基于專家結(jié)構(gòu)模型的和基于機(jī)器學(xué)習(xí)的方法:前者利用專家知識(shí)構(gòu)建的結(jié)構(gòu)模型、決策樹(shù)模型或者知識(shí)庫(kù)進(jìn)行診斷,后者則是利用歷史運(yùn)行數(shù)據(jù)結(jié)合已經(jīng)標(biāo)注的數(shù)據(jù)進(jìn)行診斷.在有些文獻(xiàn)中,這兩種方法都會(huì)使用.

      1.1 面向OLTP環(huán)境

      Yoon 等人[8]提出了數(shù)據(jù)庫(kù)性能輔助診斷框架DBSherlock,該框架可以監(jiān)控?cái)?shù)據(jù)庫(kù)運(yùn)行期間的若干運(yùn)行指標(biāo),當(dāng)出現(xiàn)性能問(wèn)題的時(shí)候,用戶就可以劃出性能異常的區(qū)域,讓DBSherlock 找出可能出現(xiàn)異常的指標(biāo).這些異常的指標(biāo)具有較強(qiáng)的劃分能力,即給定一個(gè)關(guān)于指標(biāo)的斷言(形如Attr>k),使用這個(gè)斷言可以把落在正常區(qū)域內(nèi)的點(diǎn)和落在異常區(qū)域內(nèi)的點(diǎn)分開(kāi).根據(jù)這些異常的指標(biāo),用戶就可以找出問(wèn)題發(fā)生的原因.DBSherlock 可以將用戶的反饋整合成因果模型,因果模型的原因是數(shù)據(jù)庫(kù)性能問(wèn)題的根因,結(jié)果是一些關(guān)于異常指標(biāo)的斷言,這些模型會(huì)用到未來(lái)的推斷里去.DBSherlock 還在語(yǔ)義層面對(duì)因果模型進(jìn)行合并,實(shí)驗(yàn)表明,這種方法大大提高了模型的診斷能力.

      Benoit 等人[6]提出了數(shù)據(jù)庫(kù)性能自動(dòng)診斷框架,和之前工作不同的是,該框架不僅可以對(duì)數(shù)據(jù)庫(kù)性能問(wèn)題進(jìn)行診斷,還將診斷和調(diào)優(yōu)這兩個(gè)部分利用決策樹(shù)的模型統(tǒng)一在一起,決策樹(shù)的非葉節(jié)點(diǎn)是條件判斷,而決策樹(shù)的葉節(jié)點(diǎn)是需要調(diào)優(yōu)的資源.對(duì)于一次關(guān)于數(shù)據(jù)庫(kù)的診斷,系統(tǒng)會(huì)根據(jù)數(shù)據(jù)庫(kù)當(dāng)前的狀態(tài)從根節(jié)點(diǎn)出發(fā),根據(jù)非葉節(jié)點(diǎn)的條件選擇子節(jié)點(diǎn)進(jìn)行訪問(wèn).系統(tǒng)重復(fù)以上的步驟,直至到達(dá)葉節(jié)點(diǎn),葉節(jié)點(diǎn)的資源即是我們需要調(diào)優(yōu)的資源.此外,框架對(duì)于數(shù)據(jù)庫(kù)的負(fù)載和資源分別進(jìn)行了建模,利用數(shù)據(jù)庫(kù)的結(jié)構(gòu)信息提升了準(zhǔn)確性,作者還會(huì)使用不同資源配置下數(shù)據(jù)庫(kù)運(yùn)行的性能結(jié)果調(diào)優(yōu)決策樹(shù).不過(guò),該決策樹(shù)模型的模型需要依賴特定的數(shù)據(jù)庫(kù)文檔以及數(shù)據(jù)庫(kù)專家的領(lǐng)域知識(shí),因此通用性不是很強(qiáng).

      Belknap 等人在文獻(xiàn)[7]中介紹了Oracle 中SQL 診斷工具Automatic Database Diagnostic Monitor(ADDM),在這項(xiàng)工作中,作者引入了數(shù)據(jù)庫(kù)性能的衡量通貨“數(shù)據(jù)庫(kù)時(shí)間(database time)”,即數(shù)據(jù)庫(kù)各個(gè)資源模塊、數(shù)據(jù)庫(kù)語(yǔ)句執(zhí)行的各個(gè)階段的運(yùn)行時(shí)間,并且在這個(gè)基礎(chǔ)上建立了圖模型DBTime graph,通過(guò)對(duì)圖的搜索,我們就可以定位問(wèn)題.針對(duì)統(tǒng)計(jì)信息收集成本開(kāi)銷過(guò)大的問(wèn)題,文獻(xiàn)里提出一種基于采樣的方法(active session history),即每隔一段時(shí)間觀察用戶的行為,Database Time 大的模塊更加容易被采樣到,診斷系統(tǒng)也會(huì)相應(yīng)地重點(diǎn)分析.

      Ma 等人[9]針對(duì)OLTP 數(shù)據(jù)庫(kù)中間歇性的慢查詢,提出了診斷框架iSQUAD,包含了異常抽取、相關(guān)性清楚、基于類型的模式集成聚類以及貝葉斯樣例模型這4 個(gè)部分.作者將該方法應(yīng)用于阿里云數(shù)據(jù)庫(kù)的實(shí)際數(shù)據(jù)中,取得了較好的實(shí)驗(yàn)效果.

      1.2 面向OLAP環(huán)境

      Borisov 等人[10]提出了診斷工具DIADS,它適用在以SAN 為底層存儲(chǔ)結(jié)構(gòu)的DBMS 上面,注釋計(jì)劃圖(annotated plan graph)是文獻(xiàn)[10]中主要用到的模型,該圖分為Query Layer,Database Layer 和SAN Layer:Query Layer 的內(nèi)容是數(shù)據(jù)庫(kù)的查詢計(jì)劃(因?yàn)槭荗LAP 場(chǎng)景,計(jì)劃較為復(fù)雜),Database Layer 則是數(shù)據(jù)庫(kù)相關(guān)性能運(yùn)行指標(biāo),SAN Layer 則是存儲(chǔ)的物理體系結(jié)構(gòu).通過(guò)將查詢計(jì)劃里的操作符和相關(guān)的物理、邏輯硬件資源通過(guò)圖的方式聯(lián)系在一起,就能在查詢出現(xiàn)性能問(wèn)題時(shí),使用該模型結(jié)合歷史數(shù)據(jù)進(jìn)行診斷.當(dāng)查詢執(zhí)行時(shí)間和預(yù)期不符的時(shí)候,系統(tǒng)會(huì)根據(jù)查詢計(jì)劃提取每一個(gè)操作符所消耗的時(shí)間,將異常的操作符使用機(jī)器學(xué)習(xí)算法提取出來(lái),再根據(jù)注釋計(jì)劃圖模型找出異常的硬件資源完成診斷.

      Kalmegh 等人[11]提出了框架iQCAR,該框架適用于大數(shù)據(jù)分析處理系統(tǒng)Apache Spark 上,主要的功能是分析一個(gè)查詢?cè)谶\(yùn)行的時(shí)候受到系統(tǒng)中并發(fā)執(zhí)行的查詢的影響.該研究的主要貢獻(xiàn)在于定性地分析查詢間資源搶占的影響,并且提供了多粒度的分析.該研究首先聚焦于不同的任務(wù)關(guān)于單個(gè)資源的搶占問(wèn)題,作者在這里提出了阻塞時(shí)間(blocked time)這一個(gè)概念,即單個(gè)工作獲取一個(gè)特定的資源時(shí)的等待時(shí)間;此外,作者還提出了資源獲取時(shí)間懲罰(resource acquire time penalty)來(lái)衡量一個(gè)任務(wù)獲取特定的資源的效率.在建立相關(guān)概念以后,作者定量地分析了一個(gè)查詢?cè)讷@取資源時(shí),其他并發(fā)的查詢對(duì)其阻塞造成的貢獻(xiàn).接著,作者構(gòu)建了iQC-graph,這是一個(gè)層級(jí)結(jié)構(gòu)的圖模型,每一層代表著查詢執(zhí)行過(guò)程不同的粒度,根據(jù)該圖分析查詢不同執(zhí)行過(guò)程的性能情況.

      2 總體研究方案概覽

      為了實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)運(yùn)行狀況進(jìn)行監(jiān)控和診斷,AutoMonitor 需要實(shí)時(shí)地收集數(shù)據(jù)庫(kù)執(zhí)行任務(wù)時(shí)相關(guān)的統(tǒng)計(jì)信息,并分析這些數(shù)據(jù)的變化情況.我們?cè)O(shè)計(jì)的異常診斷系統(tǒng)總體框架如圖3 所示,設(shè)計(jì)的框架分為兩個(gè)主要階段:第1 階段是離線的數(shù)據(jù)分析,第2 階段是在線實(shí)時(shí)的異常監(jiān)測(cè)和根因診斷.

      (1)關(guān)于離線的部分.

      系統(tǒng)的主要任務(wù)是訓(xùn)練在線階段所使用的模型,共有兩部分訓(xùn)練數(shù)據(jù).

      ? 一部分是異常時(shí)間序列數(shù)據(jù),這部分?jǐn)?shù)據(jù)通過(guò)模擬數(shù)據(jù)庫(kù)異常收集而來(lái),它是高維的時(shí)序數(shù)據(jù),每一維對(duì)應(yīng)一種監(jiān)控指標(biāo)的結(jié)果,它們被用來(lái)確定每一種根因觸發(fā)的異常下監(jiān)控指標(biāo)的特征,系統(tǒng)使用Kolmogorov-Smirnov 檢驗(yàn)給出每一維指標(biāo)的異常程度,挖掘有異常的監(jiān)控指標(biāo),然后將這些異常指標(biāo)和正常指標(biāo)拼接在一起,生成維數(shù)固定的異常特征向量,該向量將用于優(yōu)化的K近鄰算法中.此外,對(duì)于每一種異常的診斷,我們需要確定對(duì)應(yīng)的重要監(jiān)控指標(biāo),每個(gè)監(jiān)控指標(biāo)的重要性由數(shù)值αi決定,越重要的指標(biāo),對(duì)應(yīng)的αi越大.相比于普通K近鄰算法直接使用歐幾里得距離進(jìn)行相似度的計(jì)算,優(yōu)化的K近鄰算法在相似度計(jì)算時(shí)會(huì)涉及αi,使得系統(tǒng)對(duì)于根因不同但是表現(xiàn)相似的異常具有更強(qiáng)的判別能力,αi的具體計(jì)算方法將在第3.3 節(jié)描述;

      ? 另一部分是數(shù)據(jù)庫(kù)正常運(yùn)行狀態(tài)下的數(shù)據(jù),該部分?jǐn)?shù)據(jù)的結(jié)構(gòu)和異常數(shù)據(jù)相似,區(qū)別在于我們沒(méi)有手動(dòng)注入異常,它們被用以LSTM 循環(huán)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,訓(xùn)練以后的模型對(duì)于正常監(jiān)控時(shí)序數(shù)據(jù)具有較強(qiáng)的重構(gòu)能力,即:將一段時(shí)序數(shù)據(jù)依次輸入到模型,經(jīng)過(guò)處理保存中間結(jié)果在一個(gè)隱狀態(tài)里,模型再?gòu)脑摖顟B(tài)開(kāi)始逐步重建還原輸入的時(shí)序數(shù)據(jù).系統(tǒng)的最終目標(biāo)是讓輸入和輸出的時(shí)序數(shù)據(jù)盡可能地相似.當(dāng)異常時(shí)序數(shù)據(jù)進(jìn)入模型時(shí),由于正常和異常時(shí)序數(shù)據(jù)在結(jié)構(gòu)上的差異,重構(gòu)的結(jié)果會(huì)帶來(lái)較大的誤差,如此,系統(tǒng)便獲得異常監(jiān)測(cè)的能力.

      (2)關(guān)于在線的部分.

      當(dāng)用戶執(zhí)行工作負(fù)載的時(shí)候,系統(tǒng)將實(shí)時(shí)地監(jiān)控信息輸入到數(shù)據(jù)庫(kù)中.模型實(shí)時(shí)從數(shù)據(jù)庫(kù)讀取這部分時(shí)間序列數(shù)據(jù)并進(jìn)行異常監(jiān)測(cè),當(dāng)監(jiān)測(cè)異常值高于警報(bào)閾值(該閾值在離線階段由歷史異常數(shù)據(jù)和正常數(shù)據(jù)共同確定,目標(biāo)是最大化診斷準(zhǔn)確度)的時(shí)候,便認(rèn)為此時(shí)出現(xiàn)了異常,然后啟動(dòng)根因分析模塊進(jìn)行診斷分析.系統(tǒng)先提取未知異常的異常特征向量,然后使用優(yōu)化的K近鄰算法將未知根因的異常特征向量和已知根因的異常特征向量進(jìn)行相似度比較,從而讓用戶可以獲取異常監(jiān)控指標(biāo)和該問(wèn)題可能的根因.系統(tǒng)會(huì)將診斷的結(jié)果匯總成報(bào)告反饋給用戶.

      Fig.3 Anomaly diagnosis system architecture圖3 異常診斷系統(tǒng)結(jié)構(gòu)示意圖

      AutoMonitor 系統(tǒng)收集的統(tǒng)計(jì)信息主要包含了兩個(gè)部分,分別來(lái)自于操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng),我們使用了不同的方法收集這兩部分?jǐn)?shù)據(jù).

      ? 出于統(tǒng)計(jì)信息的可獲得性和數(shù)據(jù)庫(kù)部署的實(shí)際性考慮,我們選定Linux 作為研究的操作系統(tǒng).Linux 系統(tǒng)會(huì)自動(dòng)維護(hù)系統(tǒng)運(yùn)行的相關(guān)統(tǒng)計(jì)數(shù)據(jù)并存放在特定的目錄下,系統(tǒng)使用開(kāi)源工具dstat 收集整合這個(gè)一部分的信息,其中的監(jiān)控指標(biāo)涉及到CPU、I/O、網(wǎng)絡(luò)、中斷等部件;

      ? PostgreSQL 內(nèi)置了多個(gè)統(tǒng)計(jì)信息視圖,記錄了數(shù)據(jù)庫(kù)、數(shù)據(jù)表、索引和連接用戶等模塊的統(tǒng)計(jì)信息.通過(guò)對(duì)視圖構(gòu)造查詢,就可以定時(shí)地獲取DBMS 相關(guān)的監(jiān)控?cái)?shù)據(jù).我們將構(gòu)造的監(jiān)控?cái)?shù)據(jù)查詢寫(xiě)成插件集成到dstat 的工具里,在dstat 運(yùn)行的時(shí)候,它會(huì)定時(shí)讀取這一部分的數(shù)據(jù)并和操作系統(tǒng)的數(shù)據(jù)相對(duì)齊.考慮到PostgreSQL 內(nèi)置統(tǒng)計(jì)信息的更新頻率以及查詢開(kāi)銷,在默認(rèn)情況下,系統(tǒng)選擇1 秒作為信息收集的間隔.

      需要注意的是:以上兩部分?jǐn)?shù)據(jù)是操作系統(tǒng)和數(shù)據(jù)庫(kù)自動(dòng)維護(hù)生成的,使用該系統(tǒng)并不需要修改操作系統(tǒng)和數(shù)據(jù)庫(kù),這也保證在添加監(jiān)控以后數(shù)據(jù)庫(kù)的性能不會(huì)受太大的影響.

      當(dāng)用戶需要使用AutoMonitor 時(shí),系統(tǒng)首先會(huì)啟動(dòng)dstat,開(kāi)始監(jiān)控指標(biāo)數(shù)據(jù)的收集.dstat 從系統(tǒng)目錄以及PostgreSQL 視圖中讀取這部分?jǐn)?shù)據(jù),并將收集到的數(shù)據(jù)定時(shí)寫(xiě)入數(shù)據(jù)庫(kù)中,然后自動(dòng)監(jiān)測(cè)程序定時(shí)從數(shù)據(jù)庫(kù)讀取最新的時(shí)序數(shù)據(jù),并將這一段時(shí)間的數(shù)據(jù)輸入到LSTM 模型進(jìn)行異常監(jiān)測(cè).如果AutoMonitor 認(rèn)為此時(shí)出現(xiàn)了異常,就調(diào)用根因診斷程序,并將這段時(shí)序數(shù)據(jù)傳入進(jìn)行根因診斷.最終的結(jié)果會(huì)以報(bào)告的形式反饋給網(wǎng)頁(yè)端的用戶.

      3 算法描述

      3.1 異常監(jiān)測(cè)

      我們使用基于LSTM 的編碼器-解碼器模型來(lái)進(jìn)行針對(duì)高維時(shí)間序列異常監(jiān)測(cè)[12].給定一段時(shí)間監(jiān)控指標(biāo)數(shù)據(jù)的時(shí)間序列,系統(tǒng)可以判斷它是正常還是異常的.該算法的主要思想是:構(gòu)造一個(gè)編碼器-解碼器,如圖4 所示,它的輸入是一段時(shí)間的高維監(jiān)控指標(biāo)數(shù)據(jù),輸出是同樣長(zhǎng)度、同樣維度的時(shí)序數(shù)據(jù).即:該模型對(duì)于一段時(shí)間序列按逆序進(jìn)行重建,根據(jù)重建結(jié)果的好壞來(lái)判斷時(shí)間序列的異常性.在訓(xùn)練的階段,我們只使用正常的數(shù)據(jù)來(lái)訓(xùn)練LSTM 神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)的損失函數(shù)是序列重構(gòu)結(jié)果的誤差.如此訓(xùn)練下,LSTM 網(wǎng)絡(luò)就獲得了對(duì)于正常序列較好的建模能力,當(dāng)異常時(shí)間序列輸入的時(shí)候,模型就會(huì)產(chǎn)生較大的重構(gòu)誤差.在網(wǎng)絡(luò)結(jié)構(gòu)部分采用了深層的長(zhǎng)短期記憶網(wǎng)絡(luò)和Attention 機(jī)制[13],以提高模型擬合數(shù)據(jù)的能力.

      Fig.4 Encoder-decoder structure diagram圖4 編碼器-解碼器結(jié)構(gòu)示意圖

      下面是具體算法的描述.

      算法1.異常時(shí)序數(shù)據(jù)監(jiān)測(cè)算法.

      輸入:正常的時(shí)間序列sN,vN1,總訓(xùn)練輪數(shù)Epoch;

      輸出:誤差協(xié)方差矩陣Σ,誤差向量μ.

      由于在實(shí)際應(yīng)用的過(guò)程中,異常數(shù)據(jù)的收集較為困難,因此在設(shè)定算法的異常閾值中,我們使用了一種基于極值理論(extreme value theory)[14]的方法,該方法大致原理如下:假定異常數(shù)據(jù)在一個(gè)數(shù)據(jù)集中出現(xiàn)的概率很小,我們?cè)O(shè)定一個(gè)較小的異常概率;然后,結(jié)合數(shù)據(jù)集求解對(duì)應(yīng)的異常閾值.首先,在數(shù)據(jù)中選取一個(gè)分位數(shù)(例如0.95);然后選取大于分位數(shù)的小部分?jǐn)?shù)據(jù),根據(jù)極值理論,這一部分?jǐn)?shù)據(jù)經(jīng)過(guò)線性變換以后滿足帕累托分布.首先使用極大似然估計(jì)的方法求解該帕累托分布的參數(shù),然后根據(jù)概率求解異常閾值.具體的公式如下:

      在這里,zq是最后求解的閾值,t是分位數(shù)的值,?σ和?γ是帕累托分布的參數(shù)估計(jì)結(jié)果,q是預(yù)先設(shè)定異常閾值的概率,n是總的數(shù)據(jù)集樣本數(shù),Nt是分位數(shù)下的樣本數(shù).由于異常監(jiān)測(cè)涉及到流式的數(shù)據(jù),因此在實(shí)際應(yīng)用的過(guò)程中,系統(tǒng)會(huì)實(shí)時(shí)的更新帕累托分布的相關(guān)參數(shù)和異常閾值,進(jìn)而保證異常監(jiān)測(cè)的實(shí)時(shí)精確性.

      選用該算法有如下的優(yōu)勢(shì).

      ? LSTM是一種用于有效時(shí)間序列分析的神經(jīng)網(wǎng)絡(luò),監(jiān)控?cái)?shù)據(jù)可能存在相互關(guān)聯(lián)的情況,而LSTM網(wǎng)絡(luò)可以較好地捕捉高維數(shù)據(jù)的關(guān)聯(lián)性;

      ? 相比于一些針對(duì)時(shí)間序列異常點(diǎn)的算法,在數(shù)據(jù)庫(kù)監(jiān)控的時(shí)候,更加關(guān)注區(qū)域的異常而不是單點(diǎn)的異常.這種考慮一段時(shí)間數(shù)據(jù)異常性的策略,讓監(jiān)控魯棒性更強(qiáng);

      ? 在設(shè)定異常閾值的時(shí)候,不需要事先獲得異常數(shù)據(jù)的樣本,而是通過(guò)設(shè)定一個(gè)異常發(fā)生的概率來(lái)進(jìn)行異常閾值的求解.在實(shí)際應(yīng)用的過(guò)程中,用戶可以根據(jù)業(yè)務(wù)的實(shí)際需求來(lái)調(diào)整這個(gè)概率.另外,這種異常監(jiān)測(cè)的方法可以在流數(shù)據(jù)的環(huán)境下動(dòng)態(tài)地調(diào)整閾值,可以適應(yīng)實(shí)際場(chǎng)景下數(shù)據(jù)的動(dòng)態(tài)偏移.

      3.2 監(jiān)控指標(biāo)提取

      在找到異常區(qū)域以后,AutoMonitor 需要找出該異常下具有較強(qiáng)特征的指標(biāo),即:系統(tǒng)需要模仿DBA 自動(dòng)收集在異常區(qū)域下形狀特異的監(jiān)控指標(biāo),并且能定量地描述這種異常的程度.

      我們?cè)O(shè)計(jì)了基于滑動(dòng)窗口的Kolmogorov-Smirnov 檢驗(yàn)方法來(lái)解決此問(wèn)題.Kolmogorov-Smirnov 檢驗(yàn)是一種統(tǒng)計(jì)檢驗(yàn)方法,可以用來(lái)比較兩組數(shù)據(jù)分布的相似程度.它的一個(gè)優(yōu)點(diǎn)就是:它是一種非參數(shù)的檢驗(yàn)方法,相比于T 檢驗(yàn),不需要提前假設(shè)數(shù)據(jù)的分布,即使少量的點(diǎn)出現(xiàn)偏差,也不會(huì)對(duì)整體結(jié)果產(chǎn)生大的影響.因此,在小樣本、噪音較大的數(shù)據(jù)場(chǎng)景下具有更高的穩(wěn)定性.

      該方法的有效性基于以下兩個(gè)假設(shè).

      ? 在發(fā)生異常以后,一些特征明顯的指標(biāo)的數(shù)據(jù)分布會(huì)發(fā)生較大的改變;

      ? 在數(shù)據(jù)庫(kù)正常運(yùn)行的狀態(tài)下,指標(biāo)點(diǎn)的分布在一段時(shí)間里是穩(wěn)定的,即滿足一個(gè)未知的分布.

      我們?cè)趯?shí)踐中發(fā)現(xiàn),大多數(shù)監(jiān)控指標(biāo)都滿足以上的假設(shè).對(duì)于那些呈線性單調(diào)遞增的指標(biāo),我們使用差分的策略來(lái)進(jìn)行預(yù)處理.考慮到根因發(fā)生具體觸發(fā)的時(shí)間難以定位,一些指標(biāo)的記錄也會(huì)有滯后性,只能在一個(gè)時(shí)間窗口內(nèi)處理數(shù)據(jù).設(shè)想時(shí)間窗口內(nèi)的數(shù)據(jù)被分成了3 段:前兩段是正常的數(shù)據(jù),第三段是異常的數(shù)據(jù).系統(tǒng)會(huì)對(duì)前兩段數(shù)據(jù)進(jìn)行Kolmogorov-Smirnov 檢驗(yàn),然后對(duì)后兩段數(shù)據(jù)進(jìn)行Kolmogorov-Smirnov 檢驗(yàn).檢驗(yàn)后,統(tǒng)計(jì)量結(jié)果的差值即作為該指標(biāo)異常的評(píng)價(jià)依據(jù).因?yàn)榫唧w的異常發(fā)生點(diǎn)是未知的,系統(tǒng)會(huì)在一個(gè)時(shí)間窗口內(nèi)進(jìn)行多次計(jì)算整合結(jié)果.在監(jiān)控指標(biāo)提取以后,每一個(gè)的數(shù)據(jù)庫(kù)異常實(shí)例被轉(zhuǎn)化成了一個(gè)異常向量V,向量中的每一維對(duì)應(yīng)了一種指標(biāo)的異常程度,取值范圍是[0,1],如果該值接近為0,則代表該監(jiān)控指標(biāo)沒(méi)有出現(xiàn)異常.

      3.3 根因診斷算法

      AutoMonitor 使用最近鄰算法作為根因診斷算法,雖然K近鄰算法比較簡(jiǎn)單,但是在這個(gè)問(wèn)題下有較好的性能.因?yàn)橥环N問(wèn)題發(fā)生的時(shí)候,異常指標(biāo)的集合也是比較接近的.為了進(jìn)一步提高性能,我們?cè)O(shè)計(jì)了基于全局信息異常指標(biāo)權(quán)重調(diào)整的策略.

      該策略的思路來(lái)源于文檔搜索,對(duì)于文檔搜索問(wèn)題,簡(jiǎn)單的布爾檢索的策略不能取得很好的效果,因?yàn)椴紶枡z索將文檔里的詞語(yǔ)看作一樣的.作為布爾檢索改進(jìn),基于tf-idf 文檔向量模型[15]有著更高的搜索準(zhǔn)確度,因?yàn)槊總€(gè)詞的重要性不一樣,一些出現(xiàn)頻率較高的詞被忽略了.

      普通的K近鄰算法對(duì)于每一維的指標(biāo)不做特殊的處理,作為這個(gè)方法的改進(jìn),優(yōu)化后的K近鄰算法會(huì)重新計(jì)算每一種標(biāo)簽的異常向量每一維的指標(biāo)權(quán)重.

      假設(shè)原來(lái)使用歐幾里得距離L=計(jì)算向量之間的差異,新方法對(duì)其中的每一項(xiàng)賦予了特定的權(quán)重,在這里,距離的計(jì)算變成了:

      這里,α的計(jì)算是通過(guò)分析已知樣本所得的.我們希望以下兩類指標(biāo)的權(quán)重盡可能大,因?yàn)樗鼈冊(cè)谠\斷的場(chǎng)景下具有比較重要的價(jià)值.

      ? 該指標(biāo)在其他根因中出現(xiàn)的較少,但是在本類根因下出現(xiàn)的比較頻繁;

      ? 該指標(biāo)在其他根因的異常中出現(xiàn)的比較頻繁,但是在本類根因下出現(xiàn)的較少.

      以上兩點(diǎn)是基于數(shù)據(jù)庫(kù)運(yùn)維人員對(duì)根因診斷的經(jīng)驗(yàn)所得出來(lái)的,第1 點(diǎn)的思路是和文檔搜索tf-idf 的思路相似,找出根因中最顯著的指標(biāo);第2 點(diǎn)的思路類似于醫(yī)生對(duì)病例的診斷,比方說(shuō)一個(gè)病人的驗(yàn)血結(jié)果白細(xì)胞正常,我們就不應(yīng)該認(rèn)為該病人出現(xiàn)了炎癥.

      為了使系統(tǒng)根因推斷算法可以辨別異常向量相近的不同根因,我們?cè)O(shè)計(jì)了如下的權(quán)重調(diào)整算法:首先,將每一種的異常根因?qū)?yīng)的一系列異常向量聚合成一個(gè)向量,代表這種異常根因的特征;然后使用歐幾里得距離計(jì)算向量?jī)蓛芍g的差異,得到距離矩陣矩陣Dist.如果兩個(gè)向量之間的距離較小,將它們之間差異較大的指標(biāo)提取出來(lái)并且放大相應(yīng)的權(quán)重;否則就認(rèn)為它們之間的距離不會(huì)對(duì)診斷結(jié)果造成影響,進(jìn)而縮小它們之間差異較大指標(biāo)的權(quán)重.下面是算法的具體偽代碼描述.

      算法2.每類異常指標(biāo)權(quán)值計(jì)算策略.

      輸入:每種異常根因?qū)?yīng)的特征向量V1,V2,…,Vn,特征向量的維度k;

      輸出:每種異常根因?qū)?yīng)的權(quán)重向量A1,A2,…,An.

      值得注意的是:AutoMonitor 使用的是基于最近鄰的方法,因此當(dāng)我們引入新的異常類型以后,我們只需要將這些新類型的異常向量添加進(jìn)訓(xùn)練集中,然后重新的計(jì)算指標(biāo)權(quán)重.由于總的數(shù)據(jù)集不大,重新計(jì)算只需要很短的時(shí)間,模型的推斷速度也比較快.由此我們認(rèn)為:在添加新的數(shù)據(jù)或者新類型的異常,AutoMonitor 仍然可以有效地工作.

      4 實(shí)驗(yàn)結(jié)果分析

      在實(shí)驗(yàn)部分,我們需要驗(yàn)證以下3 個(gè)問(wèn)題.

      ? AutoMonitor 是否會(huì)對(duì)數(shù)據(jù)庫(kù)實(shí)際運(yùn)行造成較大的影響?

      ? AutoMonitor 的異常監(jiān)測(cè)模塊是否能快速部署并達(dá)到較高的監(jiān)測(cè)精度?

      ? AutoMonitor 的根因分析模塊相較于同類方法是否能有較高的診斷準(zhǔn)確率?

      4.1 環(huán)境配置

      我們使用兩臺(tái)配置相同的阿里云服務(wù)器作為實(shí)驗(yàn)的環(huán)境,服務(wù)器具體性能參數(shù)如下.

      ? 操作系統(tǒng):Ubuntu 16.04 64 位;

      ? CPU:單核Intel(R)Xeno(R)Platinum 8163 CPU@2.5GHz;

      ? 內(nèi)存:2G.

      服務(wù)器安裝的PostgreSQL 是12.0 版本,使用了python2.7/python3.6 兩種解釋器.實(shí)驗(yàn)使用TPC-C[16]作為實(shí)驗(yàn)的Benchmark.表1 是在和華為高斯數(shù)據(jù)庫(kù)DBA 交流討論后,經(jīng)過(guò)歸納整理的幾種常見(jiàn)的數(shù)據(jù)庫(kù)故障的問(wèn)題根因,其中的設(shè)計(jì)參考了文獻(xiàn)[8].這里的問(wèn)題根因涉及到了數(shù)據(jù)庫(kù)性能異常的各個(gè)方面,既包括了數(shù)據(jù)庫(kù)外部進(jìn)程對(duì)CPU、網(wǎng)絡(luò)等資源的搶占,也涵蓋了數(shù)據(jù)庫(kù)日常運(yùn)維的一系列事件,還有一部分訪問(wèn)數(shù)據(jù)庫(kù)的錯(cuò)誤行為.

      Table 1 PostgreSQL common anomaly root causes表1 PostgreSQL 數(shù)據(jù)庫(kù)常見(jiàn)的問(wèn)題根因

      實(shí)驗(yàn)中使用OLTP-Bench[16]工具實(shí)現(xiàn)了TPC-C 基準(zhǔn),該工具可以生成不同請(qǐng)求頻率和不同持續(xù)時(shí)間的TPC-C 負(fù)載,還能生成導(dǎo)入不同規(guī)模的表數(shù)據(jù).由于真實(shí)環(huán)境下數(shù)據(jù)庫(kù)的運(yùn)行數(shù)據(jù)難以獲得,以上這些異常案例數(shù)據(jù)我們通過(guò)手動(dòng)模擬觸發(fā)異常的方法來(lái)產(chǎn)生,即兩臺(tái)服務(wù)器,一臺(tái)作為數(shù)據(jù)庫(kù)服務(wù)器,另一臺(tái)作為用戶.每一次實(shí)驗(yàn)里,用戶先啟動(dòng)OLTP-Bench 執(zhí)行數(shù)據(jù)庫(kù)負(fù)載,在實(shí)驗(yàn)中途啟動(dòng)服務(wù)器中的異常程序觸發(fā)數(shù)據(jù)庫(kù)性能異常,等到異常程序結(jié)束再讓數(shù)據(jù)庫(kù)正常運(yùn)行一段時(shí)間,然后結(jié)束單次實(shí)驗(yàn).下面介紹實(shí)驗(yàn)的具體細(xì)節(jié):對(duì)于CPU、I/O 瓶頸,實(shí)驗(yàn)使用Linux 環(huán)境下開(kāi)源工具stress-ng 來(lái)?yè)屨糃PU 以及I/O 的資源;對(duì)于數(shù)據(jù)表備份以及數(shù)據(jù)表還原,實(shí)驗(yàn)直接使用PostgreSQL 中關(guān)于數(shù)據(jù)導(dǎo)入/導(dǎo)出的命令(pg_dump,psql);對(duì)于錯(cuò)誤的物理設(shè)計(jì)、開(kāi)銷巨大的查詢、負(fù)載超常和統(tǒng)計(jì)信息更新這4 類異常,實(shí)驗(yàn)直接使用描述中的方法來(lái)產(chǎn)生;對(duì)于網(wǎng)絡(luò)故障,我們使用Linux系統(tǒng)內(nèi)置命令tc 來(lái)進(jìn)行流量控制,手動(dòng)讓網(wǎng)絡(luò)通信速度變慢;對(duì)于鎖競(jìng)爭(zhēng),我們使用OLTP-Bench 對(duì)TPC-C 數(shù)據(jù)表中的一小部分?jǐn)?shù)據(jù)進(jìn)行短時(shí)間大量的訪問(wèn);考慮到數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求的多樣性,對(duì)于每一組生成的數(shù)據(jù),我們?cè)O(shè)定了不一樣的訪問(wèn)頻率(每秒事務(wù)請(qǐng)求的數(shù)目從30~150).

      4.2 監(jiān)控工具性能開(kāi)銷測(cè)試

      本實(shí)驗(yàn)旨在探究數(shù)據(jù)庫(kù)根因診斷系統(tǒng)監(jiān)控工具對(duì)OLTP 數(shù)據(jù)庫(kù)性能的影響.

      我們選取了不同的請(qǐng)求頻率,并且考慮到單次實(shí)驗(yàn)的不穩(wěn)定性,在每一種請(qǐng)求頻率下重復(fù)進(jìn)行了20 次實(shí)驗(yàn).考慮到實(shí)驗(yàn)中平均數(shù)的不穩(wěn)定性,本實(shí)驗(yàn)使用分位數(shù)作為分析性能差異的評(píng)價(jià)指標(biāo),圖5 是該實(shí)驗(yàn)的結(jié)果.

      Fig.5 Database performance comparsion with/without monitor tool圖5 有無(wú)監(jiān)控工具下數(shù)據(jù)庫(kù)性能比較結(jié)果

      通過(guò)觀察可以發(fā)現(xiàn):開(kāi)啟了監(jiān)控工具性能的損失相對(duì)而言是非常小的,分位數(shù)的平均延遲增加一般不會(huì)超過(guò)5%.原因主要有以下兩點(diǎn).

      (1)當(dāng)前監(jiān)控?cái)?shù)據(jù)請(qǐng)求的頻率為1 秒1 次,這個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)頻率而言是比較短的.在實(shí)踐中,1 秒1 次的數(shù)據(jù)請(qǐng)求頻率也足以保證推斷的精確程度,如果根據(jù)實(shí)際需要減少訪問(wèn)頻率,性能的損失可以進(jìn)一步降低;

      (2)我們收集的數(shù)據(jù)包含了數(shù)據(jù)庫(kù)和操作系統(tǒng),以上兩部分的數(shù)據(jù)均會(huì)被操作系統(tǒng)和數(shù)據(jù)庫(kù)相關(guān)的進(jìn)程定期生成.換句話說(shuō),系統(tǒng)并沒(méi)有增加數(shù)據(jù)收集上的開(kāi)銷,增加的開(kāi)銷僅僅來(lái)源于訪問(wèn)獲取數(shù)據(jù),CPU和I/O 增加的額外開(kāi)銷都比較小.

      綜上所述,我們可以確信:當(dāng)前的數(shù)據(jù)庫(kù)監(jiān)控診斷框架是輕量的,具有較強(qiáng)的實(shí)用價(jià)值.

      4.3 異常檢測(cè)模塊測(cè)試

      本實(shí)驗(yàn)旨在驗(yàn)證數(shù)據(jù)庫(kù)根因診斷系統(tǒng)異常監(jiān)測(cè)模塊的有效性,總共選取了8 000 條長(zhǎng)度為32 的正常時(shí)間序列作為模型的訓(xùn)練數(shù)據(jù).關(guān)于神經(jīng)網(wǎng)絡(luò)的一些超參數(shù)見(jiàn)表2.

      Table 2 RNN model hyper parameters表2 循環(huán)神經(jīng)網(wǎng)絡(luò)模型超參數(shù)

      自編碼器模型于GPU 服務(wù)器訓(xùn)練,圖6 是神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果.可以觀察到:該神經(jīng)網(wǎng)絡(luò)訓(xùn)練的開(kāi)銷是比較小的,網(wǎng)絡(luò)也較快地達(dá)到收斂的狀態(tài).在實(shí)際部署的時(shí)候,系統(tǒng)會(huì)實(shí)時(shí)調(diào)用最近的歷史數(shù)據(jù)來(lái)更新神經(jīng)網(wǎng)絡(luò)的模型參數(shù),較小的訓(xùn)練開(kāi)銷保證了模型的可用性.

      Fig.6 Neural network training result圖6 神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果

      實(shí)驗(yàn)選取了基于VAE[17]和基于GAN[18]的時(shí)序數(shù)據(jù)異常監(jiān)測(cè)方法和AutoMonitor 方法進(jìn)行了對(duì)比.在測(cè)試階段,我們選取了200 組異常序列數(shù)據(jù)和500 組正常序列數(shù)據(jù),圖7 和表3 是異常監(jiān)測(cè)模塊靈敏度的實(shí)驗(yàn)結(jié)果.

      Fig.7 Anomaly detection module experimental results圖7 異常監(jiān)測(cè)模塊實(shí)驗(yàn)結(jié)果

      Table 3 Anomaly detection performance comparison表3 各算法性能的對(duì)比結(jié)果

      可以看到:我們的監(jiān)測(cè)模型同時(shí)達(dá)到較高的精度和召回率.對(duì)比結(jié)果表明,AutoMonitor 方法是最優(yōu)的.我們認(rèn)為,原因有如下幾點(diǎn).

      (1)已有的基于生成模型的方法雖然可以在一些時(shí)序數(shù)據(jù)異常檢測(cè)的任務(wù)中取得比較好的效果,但是因?yàn)闀r(shí)序數(shù)據(jù)的模式各異,數(shù)據(jù)庫(kù)的監(jiān)控?cái)?shù)據(jù)又和負(fù)載相關(guān),因此,生成模型很難去學(xué)習(xí)到隱變量參數(shù);

      (2)復(fù)雜的深度生成模型往往有較多的參數(shù),如果未經(jīng)充分的調(diào)優(yōu)會(huì)難以學(xué)習(xí),從而造成性能的下降;

      (3)對(duì)于一個(gè)偏向于工程的任務(wù),我們認(rèn)為:在選擇模型算法的時(shí)候不應(yīng)該只追求精度,同樣要考慮到模型的穩(wěn)定性和訓(xùn)練速度.

      4.4 根因分析模塊測(cè)試

      本實(shí)驗(yàn)旨在驗(yàn)證AutoMonitor 中根因分析模塊的有效性.對(duì)于每一種異常設(shè)置,在不同的用戶請(qǐng)求頻率下,各生成25 組數(shù)據(jù)(總共為250 組數(shù)據(jù)).這250 組實(shí)驗(yàn)數(shù)據(jù)被隨機(jī)劃分成了訓(xùn)練集(80 組)和測(cè)試集(170 組),我們的方法將會(huì)和DBSherlock[8]、普通的K近鄰算法和決策樹(shù)算法進(jìn)行對(duì)比.

      圖8 是實(shí)驗(yàn)總體的精度對(duì)比,可以看到:AutoMonitor 的表現(xiàn)比其他3 種算法要出色;權(quán)重調(diào)整的K近鄰算法要比普通K近鄰算法精度提升10 個(gè)百分點(diǎn),比決策樹(shù)算法精度高近5 個(gè)百分點(diǎn).可以看到:DBSherlock 在實(shí)驗(yàn)數(shù)據(jù)集上的表現(xiàn)并不出色,只有不到60%的診斷精度.這說(shuō)明在比較復(fù)雜的環(huán)境下(每組數(shù)據(jù)用戶的請(qǐng)求頻率不同),DBSherlock 并不能起到很好的效果.

      Fig.8 Comparison on diagnosis precision of different diagnosis methods圖8 根因分析各方法精度對(duì)比

      圖9 是關(guān)于3 種分類器對(duì)于每一種異常的識(shí)別能力比較,我們使用F-Score 作為評(píng)價(jià)標(biāo)準(zhǔn).從實(shí)驗(yàn)結(jié)果圖中可以看到:AutoMonitor 在各類異常的根因診斷上均有較為出色的表現(xiàn),并不存在對(duì)于某種異常根因診斷能力較弱的情況.而DBSherlock 方法對(duì)于某幾類異常的診斷精度較高,但是對(duì)于另外幾類異常的診斷精度確不盡如人意.主要的問(wèn)題在于:DBSherlock 生成的斷言對(duì)于數(shù)據(jù)的敏感度較高,并且合并因果模型的策略也存在著較大的不確定性.表4 是對(duì)于每一種根因診斷的具體指標(biāo)結(jié)果,包含了精確度(第1 行)和召回率(第2 行).

      Fig.9 Comparisionon F-score of different diagnosis methods圖9 不同算法F-score 比較結(jié)果

      Table 4 Precision/Recall comparison result表4 各算法精確度/召回率的對(duì)比結(jié)果

      5 總結(jié)與未來(lái)工作

      本文研究了OLTP 數(shù)據(jù)庫(kù)在實(shí)際運(yùn)行時(shí)可能遇到的異常,分析了這些異常和一系列監(jiān)控指標(biāo)之間的影響關(guān)系,以及對(duì)這些異常的監(jiān)測(cè)和根因推斷方法.

      針對(duì)上面的問(wèn)題,本文設(shè)計(jì)了一個(gè)部署在PostgreSQL 數(shù)據(jù)庫(kù)管理系統(tǒng)上的自動(dòng)監(jiān)控診斷框架,該框架造成的額外開(kāi)銷較小,能為經(jīng)驗(yàn)較少的數(shù)據(jù)庫(kù)使用者提供自動(dòng)異常監(jiān)測(cè)診斷的服務(wù).在根因推斷上面,本文使用了一種權(quán)重調(diào)整的K近鄰算法.和普通的K近鄰算法相比,這種K近鄰算法可以更好地捕捉到不同根因之間的差異關(guān)系,并且可以提取關(guān)于某種根因相對(duì)重要的監(jiān)控指標(biāo).

      本文的實(shí)驗(yàn)部分探究了自動(dòng)異常監(jiān)測(cè)模塊和根因推斷模塊的準(zhǔn)確性,結(jié)果表明:上述的兩個(gè)模塊準(zhǔn)確性都較高,經(jīng)過(guò)權(quán)重調(diào)整的K近鄰算法對(duì)于表現(xiàn)比較接近的問(wèn)題根因具有更加好的辨別區(qū)分能力.總體來(lái)說(shuō),我們的系統(tǒng)具有實(shí)際的應(yīng)用價(jià)值.

      該系統(tǒng)目前的不足之處在于只適用于普通的單機(jī)PostgreSQL 數(shù)據(jù)庫(kù),擴(kuò)展性較差,并且診斷系統(tǒng)在離線的過(guò)程中需要比較多的訓(xùn)練數(shù)據(jù).下一步計(jì)劃將框架移植到MySQL 等主流開(kāi)源數(shù)據(jù)庫(kù)上,并且考慮將框架擴(kuò)展到分布式數(shù)據(jù)庫(kù)、云數(shù)據(jù)庫(kù)上.此外,目前的異常數(shù)據(jù)主要是人工合成模擬的,我們計(jì)劃通過(guò)和數(shù)據(jù)庫(kù)主流廠商合作的形式,研究更加實(shí)際的場(chǎng)景.

      猜你喜歡
      根因監(jiān)控數(shù)據(jù)庫(kù)
      根因分析法提高藥品不良反應(yīng)報(bào)告合格率
      The Great Barrier Reef shows coral comeback
      你被監(jiān)控了嗎?
      Zabbix在ATS系統(tǒng)集中監(jiān)控中的應(yīng)用
      基于矩陣編碼的自動(dòng)路測(cè)根因定位方法
      看監(jiān)控?cái)z像機(jī)的4K之道
      根因分析法在提高科室備用藥品質(zhì)量管理中的應(yīng)用
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      迁西县| 信宜市| 陕西省| 射阳县| 兰坪| 江达县| 油尖旺区| 景宁| 富民县| 勐海县| 启东市| 合阳县| 望谟县| 青岛市| 庆元县| 和政县| 宁阳县| 萨嘎县| 蓬莱市| 洛隆县| 莱阳市| 苗栗市| 贵南县| 巴彦淖尔市| 财经| 修文县| 南城县| 新泰市| 镇沅| 兰西县| 灵山县| 封开县| 广宁县| 松原市| 巴南区| 华亭县| 天长市| 茂名市| 阿克苏市| 迁西县| 江孜县|