郭盡朝 阿娜 高子琴
當(dāng)前交通行業(yè)在開發(fā)、實(shí)施各種業(yè)務(wù)類應(yīng)用程序時(shí),往往有以下兩大痛點(diǎn)。一是,程序的性能質(zhì)量無法評估和考核。當(dāng)前的現(xiàn)狀是,使用方通常能夠輕易確認(rèn)功能需求是否已實(shí)現(xiàn),但難以確認(rèn)為實(shí)現(xiàn)這些功能,其后臺的代碼質(zhì)量、結(jié)構(gòu)質(zhì)量是否合理,是否造成了其他方面的影響。從而使程序上線之后,因性能質(zhì)量不佳,為使用者帶來的風(fēng)險(xiǎn)和經(jīng)濟(jì)損失。二是程序所需的系統(tǒng)資源無法精確評估。程序投入真實(shí)運(yùn)營之前,無法較為精確的評估程序所需要的各種系統(tǒng)資源的數(shù)量,從而使企業(yè)在部署這些程序時(shí),要么資源過多造成了較大的設(shè)備浪費(fèi),要么資源不足,影響上線之后的系統(tǒng)性能。本研究通過一種程序優(yōu)化檢測方法及系統(tǒng),對企業(yè)研發(fā)的應(yīng)用程序進(jìn)行質(zhì)量評估,從而確保應(yīng)用程序開發(fā)的質(zhì)量和運(yùn)營效果。
(一)研究對象
本次研究對象為交通行業(yè),所選取的樣本為神朔鐵路所有已經(jīng)上線的業(yè)務(wù)系統(tǒng)。
(二)研究特點(diǎn)
當(dāng)前交通行業(yè)的各種業(yè)務(wù)系統(tǒng)其業(yè)務(wù)源端都是關(guān)系數(shù)據(jù)庫,在數(shù)據(jù)庫端借助數(shù)據(jù)庫的性能視圖,可以了解和掌握各種業(yè)務(wù)軟件訪問數(shù)據(jù)庫的代碼特征和程序所對應(yīng)的數(shù)據(jù)結(jié)構(gòu)特征,這些特征表現(xiàn)為數(shù)據(jù)庫運(yùn)行期間的各種性能統(tǒng)計(jì)信息,并從這些統(tǒng)計(jì)數(shù)據(jù)中導(dǎo)出獲得性能量度,在緊急情況下,訪問這些量度在與當(dāng)前的情況做比較,通過查看這些過去的事件統(tǒng)計(jì)信息以給當(dāng)前的問題帶來啟發(fā),由于數(shù)據(jù)庫管理員必須自始至終都密切關(guān)注可能會(huì)對他們所管理的各個(gè)系統(tǒng)的可用性或者性能有負(fù)面影響的潛在性能問題,因此不斷采集相關(guān)統(tǒng)計(jì)數(shù)據(jù)對于性能分析變得很重要。
1. 借助數(shù)據(jù)庫性能視圖
本研究的基本方法是借助對關(guān)系數(shù)據(jù)庫性能視圖中數(shù)據(jù)的定期采集,通過分析、比對實(shí)現(xiàn)程序性能質(zhì)量的評估。本研究正是借助這些保存在數(shù)據(jù)庫內(nèi)存性能視圖中的原始運(yùn)行數(shù)據(jù),通工加工分析,實(shí)現(xiàn)業(yè)務(wù)程序性能質(zhì)量的評估的。
2.以結(jié)果為導(dǎo)向
本研究是以結(jié)果為導(dǎo)向的性能評估方法。我們認(rèn)為軟件的性能質(zhì)量評估的結(jié)果毫無疑問應(yīng)當(dāng)與最終結(jié)果,即用戶體驗(yàn)相一致或相接近,因此,本研究中衡量性能質(zhì)量的各個(gè)指標(biāo),反映的是以用戶體驗(yàn)相對應(yīng)的各個(gè)維度。
我們通過兩套數(shù)據(jù)采集和處理方式,實(shí)現(xiàn)對程序質(zhì)量從基本面到具體問題點(diǎn)的追溯分析。
(一)第一套方案:周期性數(shù)據(jù)采集+三層數(shù)據(jù)加工方法
1.周期性數(shù)據(jù)采集
分為三個(gè)采樣頻率。周期性地采集數(shù)據(jù)庫性能視圖內(nèi)的信息,如Oracle數(shù)據(jù)庫的各種V$開頭的性能視圖,Sqlserver則多為dm_開頭的性能視圖,DB2多為sysibmadmin下的表或視圖。這些信息包括且不限于數(shù)據(jù)庫狀態(tài)、數(shù)據(jù)庫結(jié)構(gòu)、性能指標(biāo)計(jì)數(shù)器、等待事件、SQL執(zhí)行統(tǒng)計(jì)、SQL執(zhí)行計(jì)劃等;通過周期性的收集整理數(shù)據(jù)庫性能視圖,從而對關(guān)系數(shù)據(jù)庫端的應(yīng)用程序質(zhì)量、數(shù)據(jù)結(jié)構(gòu)質(zhì)量和配置質(zhì)量進(jìn)行分析。
2.三層次數(shù)據(jù)加工
將獲取到的大量目標(biāo)數(shù)據(jù)庫的原始運(yùn)行數(shù)據(jù)進(jìn)行時(shí)間切片、特征箍選等一系列數(shù)據(jù)加工,采樣到的原始數(shù)據(jù)最多會(huì)進(jìn)行三輪的箍選和加工,從而為軟件前端的功能顯示準(zhǔn)備好直觀明確的呈現(xiàn)內(nèi)容。
具體的采集和加工邏輯如下圖:
(二)第二套方案:觸發(fā)式采集+算法庫數(shù)據(jù)處理
因擾企業(yè)的應(yīng)用類問題有一個(gè)主要的特點(diǎn)是,問題的原因往往只在問題剛剛引發(fā)時(shí)能夠追蹤到痕跡,很多應(yīng)用類問題事后是無法被重現(xiàn)和追溯的。因此,我們采用一套獨(dú)創(chuàng)的觸發(fā)式邏輯,以確保能在問題剛剛發(fā)生(或剛剛出現(xiàn)征兆時(shí))追蹤并保留下問題的根源數(shù)據(jù)。具體如下:
在第一種周期性采樣中,每分鐘會(huì)收集數(shù)據(jù)庫的狀態(tài)、性能計(jì)數(shù)器等信息,因?yàn)楫?dāng)系統(tǒng)出現(xiàn)異常時(shí),首先會(huì)體現(xiàn)到這些狀態(tài)和性能計(jì)數(shù)器上,這樣當(dāng)監(jiān)測系統(tǒng)在發(fā)現(xiàn)收集到的指標(biāo)有異常時(shí),首先確定是何種指標(biāo)異常,然后再根據(jù)事先設(shè)置好的程序邏輯,立刻針對性的采集與這種異常相關(guān)的程序運(yùn)行信息。這里提到的“事先設(shè)置好的程序邏輯”,在于我們在本研究中專門為多種已知的、不同問題,分別準(zhǔn)備一套不同的程序處理邏輯,我們將所有這些不同程序處理邏輯的集合,稱之為算法庫,以應(yīng)對不同問題的不同處理方法。
簡單來說,整個(gè)觸發(fā)式采集+算法庫處理邏輯大概分為三個(gè)步驟:
步驟1:借助第一種方法周期性采集中的短周期采集,如每分鐘一次掃描數(shù)據(jù)庫性能視圖中的各項(xiàng)性能計(jì)數(shù)器和狀態(tài)信息。
步驟2:如果在短周期性采集中,一旦發(fā)現(xiàn)某一數(shù)據(jù)庫的性能計(jì)數(shù)器或數(shù)據(jù)庫狀態(tài)信息異常,則觸發(fā)針對這類異常問題信息的收集和處理。
步驟3:這類異常問題具體的數(shù)據(jù)收集方式和數(shù)據(jù)處理方法將根據(jù)事先存放在軟件算法庫中的邏輯進(jìn)行。
步驟4:算法庫的作用不光是數(shù)據(jù)采集與處理,還包括針對具體問題的數(shù)據(jù)個(gè)性化展示,不同的問題以不同可視化方式進(jìn)行呈現(xiàn)。
根據(jù)以上兩套研究方案,我們對神朔鐵路各個(gè)業(yè)務(wù)系統(tǒng)進(jìn)行程序質(zhì)量評估以及具體問題的詳細(xì)分析,以下是本次研究得到的信息: