復(fù)雜場(chǎng)景的數(shù)據(jù)庫(kù)運(yùn)維診斷,AI可堪一戰(zhàn)?
數(shù)年前,AIOPS強(qiáng)勢(shì)崛起的時(shí)候,大家認(rèn)為AIOPS是替代專(zhuān)家運(yùn)維的最佳實(shí)現(xiàn)途徑。當(dāng)時(shí)的愿景是無(wú)需專(zhuān)家知識(shí),無(wú)需十分精準(zhǔn)的可觀(guān)測(cè)性分析,僅僅利用現(xiàn)象和規(guī)律,利用AI算法就能夠解決困擾運(yùn)維工作數(shù)十年的難題。
數(shù)年過(guò)去了,曾經(jīng)狂熱于AIOPS的我有所感悟,現(xiàn)在我覺(jué)得當(dāng)前的數(shù)據(jù)庫(kù) AIOPS頂多算是智能輔助運(yùn)維,無(wú)法稱(chēng)之為真正的智能運(yùn)維,主要是數(shù)據(jù)庫(kù)運(yùn)維的場(chǎng)景太復(fù)雜了,很多場(chǎng)景專(zhuān)家都很難定位問(wèn)題,僅僅依靠沒(méi)有專(zhuān)家知識(shí)的算法,就想有所突破,真的太難了。搞 AIOPS的朋友可能會(huì)不大服氣,認(rèn)為AI的能力已經(jīng)足夠了,完全可以勝任復(fù)雜的故障定位,并舉出他們的案例來(lái)。有時(shí)候你列舉的場(chǎng)景可能是OK的,但是泛化到其他的場(chǎng)景或者用戶(hù)那邊就不見(jiàn)得有效了。這也是很多上了AIOPS項(xiàng)目的客戶(hù)抱怨當(dāng)時(shí)做實(shí)驗(yàn)時(shí)候覺(jué)得效果還行,一實(shí)戰(zhàn)就不行了。
對(duì)于一些互聯(lián)網(wǎng)架構(gòu)的系統(tǒng),數(shù)據(jù)庫(kù)本身不會(huì)出現(xiàn)復(fù)雜的故障,大部分故障都可以通過(guò)擴(kuò)容、限流或者重啟來(lái)完成。對(duì)于這樣的場(chǎng)景,AIOPS的智能化程度是夠用的。而對(duì)于一些傳統(tǒng)行業(yè)場(chǎng)景,AI還是不堪一用的。
比如有一個(gè)案例,某天凌晨00:12-00:15,用戶(hù)的一個(gè)業(yè)務(wù)系統(tǒng)出現(xiàn)了三分鐘的卡頓,這個(gè)業(yè)務(wù)跑了很多年了,這幾天業(yè)務(wù)變化也不大,那個(gè)時(shí)段發(fā)現(xiàn)sga_resize_ops中shared_pool有增長(zhǎng),能定位是sga resize導(dǎo)致了問(wèn)題還是其他什么原因?qū)е铝藛?wèn)題?還是其他什么問(wèn)題?如果是sga resize導(dǎo)致的問(wèn)題,如何讓此類(lèi)問(wèn)題不再發(fā)生呢?
圖片
從AWR報(bào)告上看,確實(shí)Mutex X等待十分嚴(yán)重,SGA RESIZE HANG導(dǎo)致3分鐘的卡頓的可能性很大,但是并非唯一的可能性。這需要看卡頓起始時(shí)間與SGA RESIZE在時(shí)間上的先后順序。本案例最后分析結(jié)果是卡頓先于SGA RESIZE數(shù)秒鐘,因此SGA RESIZE只是結(jié)果而已。哪怕SGA RESIZE先于卡頓,引發(fā)SGA不足的原因還是更接近于根源的原因。要想找出共享池使用量突然增大的原因才是根本性解決問(wèn)題的關(guān)鍵。
如果僅僅從上面的數(shù)據(jù)上看,每秒5.2W+的執(zhí)行可能是個(gè)疑點(diǎn),不過(guò)從歷史上看,這套系統(tǒng)的每秒執(zhí)行數(shù)一直就這么高。通過(guò)歷史數(shù)據(jù)的比對(duì)分析,找出異常與正常的關(guān)鍵點(diǎn)是深入解析此類(lèi)問(wèn)題的關(guān)鍵?;诖竽P突蛘咝∧P退惴ㄏ胍鉀Q此類(lèi)問(wèn)題目前能力還不足。
事實(shí)上,要想通過(guò)自動(dòng)化工具分析出此類(lèi)問(wèn)題的原因,需要對(duì)歷史的指標(biāo)數(shù)據(jù)有十分精準(zhǔn)和周全地采集。不過(guò)僅有歷史數(shù)據(jù)還是不夠的,雖然我們能夠通過(guò)算法發(fā)現(xiàn)某些指標(biāo)是正常的,某些指標(biāo)是異常的,并且能夠?qū)Ξ惓0凑諘r(shí)間序列去排序,但是我們還是缺乏足夠的知識(shí)庫(kù),從這些異常中直接定位問(wèn)題。有經(jīng)驗(yàn)的運(yùn)維專(zhuān)家可以發(fā)現(xiàn)一些問(wèn)題,并且逐步排除一些可能性,從而讓問(wèn)題收斂,而AI算法在這方面的能力依然不足。
圖片
剛開(kāi)始的時(shí)候我發(fā)現(xiàn)了這些異常,解析后0次之行的SQL,很可能是這些SQL存在語(yǔ)法問(wèn)題。后來(lái)用戶(hù)那邊確認(rèn)是自己的應(yīng)用框架存在BUG,此類(lèi)問(wèn)題一直存在,在沒(méi)有卡頓的時(shí)段里也會(huì)存在這樣的情況。
要定位此類(lèi)問(wèn)題,如果是專(zhuān)家進(jìn)行分析,還會(huì)考慮一種排除方法,那就是找出當(dāng)天可以確定的異常情況。比如當(dāng)天是否有特殊的操作,發(fā)生問(wèn)題的時(shí)間是1號(hào),因此我們也懷疑是否因?yàn)樾碌谋矸謪^(qū)缺乏統(tǒng)計(jì)數(shù)據(jù)引起了動(dòng)態(tài)采樣?;蛘哒f(shuō)有一些新的分區(qū)創(chuàng)建操作等。這些問(wèn)題也被一一排除了。
最后我還是把焦點(diǎn)定位在1號(hào)這個(gè)疑點(diǎn)上,讓用戶(hù)檢查之前幾個(gè)月1號(hào)的應(yīng)用日志,發(fā)現(xiàn)雖然前幾個(gè)月沒(méi)有觸發(fā)應(yīng)用告警,但是在類(lèi)似的時(shí)點(diǎn)應(yīng)用都出現(xiàn)了類(lèi)似的卡頓現(xiàn)象。通過(guò)這個(gè)疑點(diǎn),我懷疑卡頓來(lái)自于一個(gè)周期性的任務(wù),但是在定期任務(wù)中確實(shí)找不到相關(guān)的定時(shí)任務(wù)。而且卡頓出現(xiàn)的時(shí)點(diǎn)又不是嚴(yán)格意義上的0點(diǎn),而是0點(diǎn)之后的數(shù)秒到數(shù)十秒內(nèi),時(shí)間并不一致。于是分析只能從數(shù)據(jù)庫(kù)基本原理入手,最終發(fā)現(xiàn)了一個(gè)疑點(diǎn),就是分區(qū)表的延時(shí)段創(chuàng)建。因?yàn)榉謪^(qū)表延時(shí)段創(chuàng)建導(dǎo)致的CURSOR失效引發(fā)了一系列的共享池相關(guān)的問(wèn)題,最終導(dǎo)致了卡頓。
對(duì)于如此復(fù)雜的故障場(chǎng)景,專(zhuān)家要排除大量的非關(guān)聯(lián)因素,需要與現(xiàn)場(chǎng)的DBA進(jìn)行充分的溝通才能達(dá)成目標(biāo),因?yàn)楹芏喱F(xiàn)象并沒(méi)有被指標(biāo)化,因此也無(wú)法通過(guò)自動(dòng)化采集形成指標(biāo),更不要說(shuō)去做自動(dòng)化分析了。在缺乏基礎(chǔ)數(shù)據(jù)的基礎(chǔ)上,AIOPS根本無(wú)法捕獲到與此類(lèi)理論相關(guān)的知識(shí)點(diǎn)和數(shù)據(jù),因此怎么可能將分析指向此診斷路徑?
從上面的那個(gè)案例來(lái)看,目前AIOPS的理論基礎(chǔ)是有的,無(wú)論是小模型還是大模型,都是能夠輔助專(zhuān)家進(jìn)行分析的。其中最為缺乏的還是高質(zhì)量的專(zhuān)家知識(shí),對(duì)于此類(lèi)問(wèn)題,需要由專(zhuān)家參與才能構(gòu)建出來(lái)。專(zhuān)家需要構(gòu)建出一系列的圖譜,才能讓知識(shí)數(shù)字化,利用這些數(shù)字化的知識(shí),才能知道想要走通這些圖譜需要什么樣的數(shù)據(jù),然后我們才能把數(shù)據(jù)庫(kù)的現(xiàn)象數(shù)字化表示出來(lái),這樣AI算法才能覆蓋這個(gè)場(chǎng)景。
圖片
比如上面的一個(gè)關(guān)于direct path read temp/direct path write temp過(guò)多引發(fā)系統(tǒng)問(wèn)題的知識(shí)就需要理解Oracle直接路徑讀寫(xiě)原理的專(zhuān)家經(jīng)過(guò)梳理才能夠比較清晰地呈現(xiàn)出來(lái)。有了這張圖,才能夠編制出有價(jià)值的算法來(lái)分析此類(lèi)問(wèn)題,雖然說(shuō)這張圖還只是很初級(jí),還只是把一些常見(jiàn)的問(wèn)題包含在內(nèi)。在構(gòu)建算法之前,首先要把分析要素都指標(biāo)化了,否則算法也是巧婦難為無(wú)米之炊。
在數(shù)據(jù)庫(kù)領(lǐng)域,AIOPS是未來(lái)必然的方向,不過(guò)在實(shí)現(xiàn)的路徑上,還有很多爭(zhēng)議,我覺(jué)得,任何智能背后都必然有更為艱苦的人工,想要繞過(guò)專(zhuān)家,繞過(guò)知識(shí)去構(gòu)建AIOPS,只能是空中樓閣。