李杰 張攀翔
摘 要隨著日益激增的IT應(yīng)用復(fù)雜性,企業(yè)同時(shí)面臨業(yè)務(wù)需求更快的變化,用戶期望持續(xù)攀升,需要更高的性價(jià)比等方面的影響,在這些因素的影響下,IT應(yīng)用在運(yùn)行過程中發(fā)生諸如性能下降或者服務(wù)不可用等故障的可能性大大增加,從而影響業(yè)務(wù)服務(wù)的正常運(yùn)行。業(yè)務(wù)部門渴望更加清晰、實(shí)時(shí)的得到關(guān)鍵業(yè)務(wù)應(yīng)用的分析數(shù)據(jù),來把握用戶行為,影響分析和轉(zhuǎn)化率。
【關(guān)鍵詞】用戶體驗(yàn) 業(yè)務(wù)性能 監(jiān)測(cè)分析
長(zhǎng)期以來企業(yè)IT運(yùn)維停留在“以資源為中心”的管理模式,關(guān)注的是IT資源的可用性和相關(guān)技術(shù)性能指標(biāo),對(duì)IT用戶行為和業(yè)務(wù)性能(體驗(yàn)狀況)卻是一無所知。例如用戶來自哪里,做了什么操作,遇到哪些錯(cuò)誤,業(yè)務(wù)處理消耗多少時(shí)間,業(yè)務(wù)性能耗時(shí)在網(wǎng)絡(luò),還是服務(wù)器(程序邏輯及SQL 邏輯)…等,所以這些用戶體驗(yàn)顯得尤為重要。因此有效地管理這些應(yīng)用,提升用戶體驗(yàn),需要在系統(tǒng)性能、使用效能、可用性監(jiān)測(cè)等多個(gè)方面進(jìn)行保障與提升,是業(yè)務(wù)發(fā)展的迫切需要。
1 現(xiàn)有技術(shù)方案及缺點(diǎn)
1.1 現(xiàn)有技術(shù)方案
對(duì)于大型的應(yīng)用系統(tǒng),業(yè)務(wù)功能模塊至少幾十個(gè),每一個(gè)功能模塊根據(jù)業(yè)務(wù)實(shí)際情況,性能呈現(xiàn)存在差異,如何有效對(duì)業(yè)務(wù)模塊性能進(jìn)行自動(dòng)化監(jiān)測(cè)與分析管理,了解真實(shí)用戶體驗(yàn),對(duì)用戶體驗(yàn)不好業(yè)務(wù)缺乏問題精定位與分析,主要分如下三種方式來執(zhí)行:
1.1.1 用戶報(bào)障方式
依賴于用戶報(bào)障,如用戶在使用某項(xiàng)功能或執(zhí)行某項(xiàng)操作響應(yīng)變慢,執(zhí)行時(shí)間較正常時(shí)超出許多。由用戶報(bào)障給業(yè)務(wù)維護(hù)部門,維護(hù)人員通知開發(fā)人員及數(shù)據(jù)庫人員對(duì)性能問題業(yè)務(wù)進(jìn)行跟進(jìn)處理。
1.1.2 日志記錄方式
在應(yīng)用系統(tǒng)設(shè)計(jì)、開發(fā)階段,或者是在新增業(yè)務(wù)正式上線前,設(shè)計(jì)人員、開發(fā)人員等憑借設(shè)定好的標(biāo)準(zhǔn)日志格式,記錄對(duì)業(yè)務(wù)功能點(diǎn)每一個(gè)步驟耗時(shí),通過日志記錄方式監(jiān)測(cè)與分析業(yè)務(wù)處理性能;在系統(tǒng)正式運(yùn)行過程中,當(dāng)發(fā)現(xiàn)業(yè)務(wù)功能較慢時(shí),通過人工分析日志方式被動(dòng)分析業(yè)務(wù)性能較差的原因,優(yōu)點(diǎn)可獲取用戶真實(shí)體驗(yàn)數(shù)據(jù)。
1.1.3 主動(dòng)模擬方式
主動(dòng)模擬是通過定期執(zhí)行預(yù)定義腳本模擬用戶訪問應(yīng)用系統(tǒng)來獲取事務(wù)可用性和響應(yīng)時(shí)間,一般需要在靠近用戶端位置部署主動(dòng)模擬裝置,優(yōu)點(diǎn)是能夠7×24小時(shí)持續(xù)不間斷地對(duì)應(yīng)用進(jìn)行監(jiān)控和能夠早于用戶發(fā)現(xiàn)問題, 維護(hù)人員憑借個(gè)人經(jīng)驗(yàn)手工分析業(yè)務(wù)每一個(gè)步驟耗時(shí)情況,如判定業(yè)務(wù)邏輯設(shè)計(jì)不合理,導(dǎo)致性能較差,通知開發(fā)人員修改業(yè)務(wù)邏輯及后臺(tái)SQL;
1.2 現(xiàn)有技術(shù)的缺點(diǎn)及該文要解決的問題
現(xiàn)有技術(shù)有如下缺點(diǎn):
(1)通過用戶報(bào)障,這時(shí)業(yè)務(wù)已經(jīng)受到影響,是個(gè)別用戶性能問題,還是普遍性較差,無法統(tǒng)一進(jìn)行判斷,這時(shí)業(yè)務(wù)性能分析是采取被動(dòng)方式進(jìn)行端到端分析過程,往往問題真正得到解決需要花費(fèi)大量時(shí)間,對(duì)業(yè)務(wù)造成不可估量的影響。
(2)日志記錄方式,雖然能夠很好記錄系統(tǒng)業(yè)務(wù)功能每個(gè)步驟性能情況,但取決于系統(tǒng)設(shè)計(jì)之初有良好日志記錄方式,如果沒有相應(yīng)標(biāo)準(zhǔn)日志記錄方式,則需要花費(fèi)大量人力及財(cái)力,對(duì)系統(tǒng)進(jìn)行改造,效果并不理想。
(3)主動(dòng)模擬方式,現(xiàn)實(shí)中常常只用于對(duì)關(guān)鍵業(yè)務(wù)性能進(jìn)行探測(cè)分析,如果覆蓋全業(yè)務(wù)功能,大規(guī)模探測(cè)會(huì)干擾系統(tǒng)整體性能,并且獲取的不是真實(shí)用戶體驗(yàn)數(shù)據(jù)缺乏業(yè)務(wù)分析價(jià)值。
(4)當(dāng)系統(tǒng)業(yè)務(wù)整體性能出現(xiàn)緩慢現(xiàn)象時(shí),數(shù)據(jù)庫人員、開發(fā)人員、中間件人員各自所負(fù)責(zé)技術(shù)進(jìn)行性能排查,屬于大海撈針的做法,需要花費(fèi)大量人力物力去定位與分析,缺乏有效手?jǐn)嗳ザㄎ皇悄囊粋€(gè)請(qǐng)求及后臺(tái)SQL存在性能問題影響到業(yè)務(wù)整體性能情況,所于事后排查,效果并不明顯。
現(xiàn)有技術(shù)方案雖然有事前及事后兩種應(yīng)急處理方式,都存在缺陷,無法精準(zhǔn)對(duì)業(yè)務(wù)性能進(jìn)行監(jiān)測(cè)(真實(shí)用戶體驗(yàn)信息),業(yè)務(wù)性能定位與分析需要花費(fèi)大量人力、時(shí)間來進(jìn)行處理,存在一定的被動(dòng)性及肓目性。目前大量的運(yùn)維實(shí)踐經(jīng)驗(yàn)表明,即使在后端資源監(jiān)控比較完善的情況下,仍有相當(dāng)多比例的問題依然是由用戶首先發(fā)現(xiàn)和報(bào)告的,不僅降低用戶的滿意度,也使IT運(yùn)維工作相當(dāng)被動(dòng),因此有必要尋找一種合適技術(shù)手段對(duì)業(yè)務(wù)性能進(jìn)行直接監(jiān)控,以彌補(bǔ)現(xiàn)有IT資源監(jiān)控工具的不足和缺陷,幫助企業(yè)全面掌握IT終端用戶的行為和體驗(yàn)狀況,促進(jìn)IT運(yùn)維面向業(yè)務(wù)和面向用戶體驗(yàn)。本提案主要針對(duì)真實(shí)用戶體驗(yàn)數(shù)據(jù)進(jìn)行采集、業(yè)務(wù)性能告警、業(yè)務(wù)性能分析三部份進(jìn)行詳細(xì)介紹,闡述如何主動(dòng)對(duì)用戶真實(shí)體驗(yàn)數(shù)據(jù)進(jìn)行采集,對(duì)業(yè)務(wù)性能進(jìn)行提前預(yù)警,性能分析快速定位業(yè)務(wù)邏輯及sql問題,大大的提升存在性能問題業(yè)務(wù)處理效率。
2 基于Java平臺(tái)的Web應(yīng)用系統(tǒng)業(yè)務(wù)性能監(jiān)測(cè)及分析的實(shí)現(xiàn)
本方案主要分為三層來實(shí)現(xiàn),如圖1所示。
2.1 采集層
此模塊負(fù)責(zé)對(duì)系統(tǒng)整體及關(guān)鍵業(yè)務(wù)的相關(guān)性能數(shù)據(jù)進(jìn)行實(shí)時(shí)采集,針對(duì)大型業(yè)務(wù)系統(tǒng),業(yè)務(wù)本身訪問比較繁忙,頻繁采集所有業(yè)務(wù)模塊性能數(shù)據(jù),勢(shì)必干擾業(yè)務(wù)正常使用,可以利用網(wǎng)絡(luò)旁路偵聽技術(shù)進(jìn)行采集可很好解決此類問題。
網(wǎng)絡(luò)旁路偵聽技術(shù)主要是通過SPAN模式(交換機(jī)端口鏡像)或TAP模式(網(wǎng)絡(luò)分流器復(fù)制)將需監(jiān)控應(yīng)用系統(tǒng)網(wǎng)絡(luò)流量(包括上行和下行流量)接入專門負(fù)責(zé)報(bào)文解析的旁路偵聽設(shè)備中,具體部署方式如圖2所示。
(1)在連接應(yīng)用服務(wù)器交換機(jī),將應(yīng)用服務(wù)器端口進(jìn)行鏡像到另外一個(gè)端口
(2)將鏡像的端口與旁路偵聽設(shè)備服務(wù)器連接,無侵入式,無需安裝探針、代理,全面保障整個(gè)業(yè)務(wù)系統(tǒng)正常運(yùn)行。
(3)系統(tǒng)將自動(dòng)收集交換機(jī)的所有報(bào)文信息,并將信息入庫到系統(tǒng)數(shù)據(jù)庫。
(4)報(bào)文信息將包括用戶訪問rul地址,用戶session信息,網(wǎng)絡(luò)傳送時(shí)間等信息。
我們知道,在基于B/S架構(gòu)應(yīng)用中,當(dāng)用戶訪問應(yīng)用時(shí),用戶請(qǐng)求會(huì)通過網(wǎng)路傳遞給WEB服務(wù)器,然后WEB服務(wù)器對(duì)用戶請(qǐng)求進(jìn)行處理,并將處理結(jié)果返回給客戶端。如圖3所示。
通過網(wǎng)絡(luò)旁路偵聽技術(shù)可以方便捕獲用戶與WEB服務(wù)器之間的交互報(bào)文來分析用戶體驗(yàn)行為,并且能清楚了解用戶與WEB服務(wù)器每個(gè)交互的細(xì)節(jié)。例如用戶訪問了應(yīng)用的那個(gè)功能、cookie/session-id、GET/POST參數(shù)、客戶端IP、服務(wù)器IP、訪問量、瀏覽器類型、服務(wù)器響應(yīng)碼、服務(wù)器響應(yīng)時(shí)間、網(wǎng)絡(luò)傳輸時(shí)間等等。通過對(duì)這些數(shù)據(jù)進(jìn)行多維度分析,就能提供獲取應(yīng)用的用戶體驗(yàn)情況和各種有價(jià)值的多維度分析報(bào)表,除了對(duì)IT運(yùn)維有分析價(jià)值外還能進(jìn)一步挖掘業(yè)務(wù)價(jià)值。
2.2 告警層
通過對(duì)業(yè)務(wù)指標(biāo)告警的定義及告警閥值的定義,發(fā)現(xiàn)有超過閥值KPI指標(biāo)的業(yè)務(wù),進(jìn)行異常情況告警,例如某某業(yè)務(wù)平均響應(yīng)時(shí)間大于N 秒時(shí)產(chǎn)生告警事件,同時(shí)支持告警關(guān)聯(lián)及告警指標(biāo)自定義建模,支持自定義告警。
性能預(yù)警規(guī)則級(jí)別定義參考如表1。
2.3 分析層
2.3.1 業(yè)務(wù)分析角度
關(guān)鍵性能指標(biāo) (KPI) 是用于測(cè)定系統(tǒng)性能優(yōu)劣的可計(jì)量度量值,經(jīng)常會(huì)在一段時(shí)間內(nèi)評(píng)估 KPI。這點(diǎn)非常重要,如果性能的好壞單純依靠用戶的感官,就會(huì)使優(yōu)化工作陷入泥潭??闪炕摹⒖蓞⒄盏膬?yōu)化指標(biāo)是優(yōu)化成果得到認(rèn)可的重要度量,也是性能優(yōu)化的源動(dòng)力。那么如何制定得到各方認(rèn)可的性能KPI,可通過行業(yè)特定領(lǐng)域里廣泛認(rèn)同的最佳實(shí)踐,制定一系列用戶體驗(yàn)有關(guān)的KPI維度,主要包括效率、效益和整體滿意度和服務(wù)質(zhì)量預(yù)期的對(duì)比,來評(píng)估Web系統(tǒng)性能:
(1)系統(tǒng)監(jiān)測(cè)維度。應(yīng)用性能殺手排名、最慢的頁面排名、系統(tǒng)資源開銷排名、 實(shí)時(shí)系統(tǒng)性能分析、應(yīng)用大對(duì)象監(jiān)控、中間件及數(shù)據(jù)庫性能監(jiān)測(cè)等。
(2)地市運(yùn)營維度。實(shí)時(shí)系統(tǒng)整體滿意度、地市整體滿意度、實(shí)時(shí)系統(tǒng)整體出錯(cuò)率、用戶訪問區(qū)域分布、發(fā)生錯(cuò)誤的頁面錯(cuò)誤分類及比例、客戶滿意度實(shí)時(shí)趨勢(shì)分析、用戶行為分析。
(3)用戶感知維度。業(yè)務(wù)響應(yīng)時(shí)間、接口處理時(shí)間、業(yè)務(wù)穩(wěn)定性、業(yè)務(wù)可操作性等。根據(jù)開發(fā)語言、業(yè)務(wù)類型不同及上面三個(gè)監(jiān)測(cè)維度監(jiān)測(cè)實(shí)際業(yè)務(wù)性能情況,可定義很多種性能指標(biāo)。業(yè)內(nèi)通常以2/5/8作為性能好壞的分界點(diǎn),2秒以下為優(yōu)秀,2-5秒為良好,5-8秒為可接受,8秒以上不可容忍。
2.3.2 代碼分析角度
前面提到使用網(wǎng)絡(luò)旁路偵聽技術(shù),主要是對(duì)業(yè)務(wù)性能監(jiān)測(cè),能與業(yè)務(wù)行為緊密結(jié)合在一起,但不能真正的進(jìn)行故障分析和定位,不能實(shí)現(xiàn)代碼級(jí)分析,而利用java平臺(tái)JVM虛擬機(jī)(agent)代理技術(shù)實(shí)現(xiàn)。通過java agent技術(shù)就可以不用修改原有的應(yīng)用程序代碼情況下,實(shí)現(xiàn)包括代碼級(jí)別性能問題的可見性(事務(wù) Traces 記錄)、性能瓶頸的快速識(shí)別與追溯(業(yè)務(wù)代碼涉及函數(shù)或方法的響應(yīng)時(shí)間、SQL語句耗時(shí))、服務(wù)器性能監(jiān)控(線程 Profiler)和端到端的應(yīng)用性能管理。
2.3.3 分層分域,閉環(huán)優(yōu)化角度
如圖4所示,優(yōu)化包括服務(wù)器端的多個(gè)部分,如主機(jī)、存儲(chǔ)、操作系統(tǒng)、中間件、代碼、數(shù)據(jù)庫、sql等。問題可能存在于多個(gè)方面,優(yōu)化人員應(yīng)當(dāng)如何入手呢?以用戶感知為導(dǎo)向,用戶只需指出哪里有問題,采用分層分域的優(yōu)化手段及閉環(huán)優(yōu)化流程,提高優(yōu)化效果與優(yōu)化效率。
分層:即縱向?qū)?yīng)用系統(tǒng)的組成部分分層,通常我們將其分為硬件層、平臺(tái)層與應(yīng)用層,首先判斷問題發(fā)生在那里層面,再由不同專業(yè)的工程師進(jìn)行分析處理,該做法可充分利用工程師的專業(yè)能力,提高優(yōu)化質(zhì)量。
分域:即橫向?qū)τ脩籼岢龅膯栴}按優(yōu)化級(jí)別進(jìn)行分類,哪一些是重點(diǎn)問題域、重要場(chǎng)景域、共性問題域,對(duì)一些相同類型的問題分析處理方法大同小異,利用已有的優(yōu)化經(jīng)驗(yàn)可加快問題處理效率。
閉環(huán)優(yōu)化,主要是對(duì)用戶提出的每一個(gè)優(yōu)化點(diǎn)實(shí)施可控制的閉環(huán)優(yōu)化流程,性能KPI 貫穿整過過程,優(yōu)化成果經(jīng)得起推敲。如圖5所示。
(1)性能評(píng)估:用戶在標(biāo)準(zhǔn)用戶終端進(jìn)行應(yīng)用操作,性能優(yōu)化人員進(jìn)行性能評(píng)估,重現(xiàn)、定位、分析性能瓶頸,對(duì)收集的性能問題進(jìn)行分析過濾,對(duì)于在對(duì)應(yīng)KPI指標(biāo)外的問題進(jìn)行統(tǒng)一優(yōu)化分析及處理。
(2)方案制定:性能優(yōu)化人員對(duì)性能問題按分層分域進(jìn)行分析后,制定相應(yīng)的優(yōu)化方案,并組織業(yè)務(wù)專家、架構(gòu)專家、開發(fā)團(tuán)隊(duì)進(jìn)行多方評(píng)審。
(3)方案測(cè)試:經(jīng)各方評(píng)審后的優(yōu)化方案,即可在測(cè)試環(huán)境實(shí)施,并驗(yàn)證評(píng)估優(yōu)化效果和影響。
(4)優(yōu)化實(shí)施:方案測(cè)試通過后,根據(jù)版本部署計(jì)劃在正式環(huán)境上線實(shí)施,并做好應(yīng)急保障。
(5)優(yōu)化驗(yàn)證:通過標(biāo)準(zhǔn)用戶終端進(jìn)行應(yīng)用優(yōu)化效果驗(yàn)證,并組織業(yè)務(wù)專家、性能問題上報(bào)人員進(jìn)行驗(yàn)收。
(6)規(guī)范總結(jié): 優(yōu)化完成后,輸出經(jīng)驗(yàn)與規(guī)范總結(jié)文檔,指導(dǎo)架構(gòu)設(shè)計(jì)和開發(fā)。
3 總結(jié)
綜上所述,對(duì)系統(tǒng)產(chǎn)品而言,速度是用戶體驗(yàn)產(chǎn)品的第一感知,是系統(tǒng)性能的體現(xiàn),其中圍繞監(jiān)測(cè)、標(biāo)準(zhǔn)、優(yōu)化三個(gè)核心進(jìn)行可持續(xù)化的系統(tǒng)應(yīng)用性能管理方法非常實(shí)用,目前性能管理也逐漸體系化和平臺(tái)化。
參考文獻(xiàn)
[1]唐文.海量運(yùn)維、運(yùn)營規(guī)劃指導(dǎo)[M].北京:電子工業(yè)出版社,2014.
[1]唐文.大型網(wǎng)站性能監(jiān)測(cè)、分析與優(yōu)化[M]. 北京:電子工業(yè)出版社,2016.
作者單位
中國移動(dòng)通信集團(tuán)廣東有限公司 廣東省廣州市 510623