前 言
最近幾年APM是個(gè)網(wǎng)紅詞匯,但是大家對(duì)APM的認(rèn)知還有一些誤區(qū),人們普遍認(rèn)為APM是解決應(yīng)用故障的利器。當(dāng)業(yè)務(wù)系統(tǒng)被投訴緩慢或者內(nèi)存泄露被迫不斷重啟等問(wèn)題出現(xiàn)時(shí),運(yùn)營(yíng)商就快速找一個(gè)APM廠商,要求幫忙快速定位問(wèn)題,如果問(wèn)題解決了說(shuō)明產(chǎn)品有價(jià)值,但由于問(wèn)題已經(jīng)解決便不再購(gòu)買(mǎi),如果沒(méi)有解決則認(rèn)為APM沒(méi)有用更不再購(gòu)買(mǎi)了!
但是要知道,解決應(yīng)用生產(chǎn)環(huán)境中的各種性能故障是APM的絕招之一,如果只是將APM應(yīng)用在這個(gè)范疇,那真是殺雞用了牛刀呀!今天我們就和大家聊聊,APM還有哪些價(jià)值。
我們認(rèn)為,APM還有下面四個(gè)方面的核心價(jià)值:
1. 動(dòng)態(tài)業(yè)務(wù)系統(tǒng)架構(gòu)的梳理分析
2. 關(guān)鍵業(yè)務(wù)的篩選
3. 系統(tǒng)故障快速鎖定排查
4. 全量數(shù)據(jù)多維度智能關(guān)聯(lián)分析
某電力客戶的部分業(yè)務(wù)請(qǐng)求需要加載幾分鐘才能出來(lái),審批一個(gè)列表經(jīng)常喝完一杯水都還沒(méi)有完成。經(jīng)過(guò)多次不同環(huán)境、不同時(shí)段測(cè)試發(fā)現(xiàn)該狀況是一個(gè)常態(tài),我們從URL請(qǐng)求架構(gòu)層出發(fā)研究調(diào)用系統(tǒng)方法量和訪問(wèn)數(shù)據(jù)庫(kù)量進(jìn)行分析,發(fā)現(xiàn)單次URL請(qǐng)求調(diào)用數(shù)據(jù)庫(kù)達(dá)到幾百次,頻繁調(diào)用數(shù)據(jù)庫(kù)導(dǎo)致執(zhí)行效率降低,增加URL請(qǐng)求的處理時(shí)間,通過(guò)在業(yè)務(wù)系統(tǒng)增加緩存機(jī)制大大提升了業(yè)務(wù)請(qǐng)求的效率。
APM必須具備系統(tǒng)架構(gòu)的分析能力,架構(gòu)分析可從兩個(gè)維度分析,分別是:業(yè)務(wù)系統(tǒng)運(yùn)行狀態(tài)和各組件之間的數(shù)據(jù)對(duì)比。下面我就給大家說(shuō)說(shuō)兩個(gè)維度應(yīng)該分析的內(nèi)容:
(1)、 業(yè)務(wù)系統(tǒng)運(yùn)行狀態(tài)。架構(gòu)合理的業(yè)務(wù)系統(tǒng)數(shù)據(jù)異常只是偶發(fā)性事件,持續(xù)發(fā)生數(shù)據(jù)異常均為架構(gòu)不合理造成的。
業(yè)務(wù)請(qǐng)求的緩慢率。緩慢率高一般是由多個(gè)業(yè)務(wù)緩慢引起,多個(gè)業(yè)務(wù)同時(shí)發(fā)生緩慢只有兩種情況,一是網(wǎng)絡(luò)原因,二就是系統(tǒng)架構(gòu)不合理。
系統(tǒng)異常的發(fā)生次數(shù)。系統(tǒng)異常為偶發(fā)性事件,若持續(xù)發(fā)生大量的系統(tǒng)異常,表明系統(tǒng)資源和方法存在不合理的使用。
業(yè)務(wù)錯(cuò)誤的發(fā)生次數(shù)。業(yè)務(wù)請(qǐng)求出現(xiàn)大量的業(yè)務(wù)錯(cuò)誤,肯定是URL請(qǐng)求與處理過(guò)程中存在問(wèn)題,是否對(duì)所有場(chǎng)景都支持。
FGC的發(fā)生頻率。頻繁發(fā)生FGC的原因多種多樣,通常情況下是因?yàn)橄到y(tǒng)突然產(chǎn)生大量垃圾,導(dǎo)致系統(tǒng)觸發(fā)FGC無(wú)法進(jìn)行其他任務(wù)。
內(nèi)存及CPU的利用率。內(nèi)存與CPU是否長(zhǎng)期利用率較高或多次發(fā)生內(nèi)存占滿與CPU占用的情況。
(2)、各組件之間的數(shù)據(jù)對(duì)比。
前后與后端的調(diào)用量和響應(yīng)時(shí)間的對(duì)比。前端調(diào)用次數(shù)與后端調(diào)用次數(shù)比例越大表明結(jié)構(gòu)越不合理,前端響應(yīng)時(shí)間與后端響應(yīng)時(shí)間對(duì)比分析耗時(shí)比例。
URL請(qǐng)求與SQL調(diào)用的對(duì)比。URL請(qǐng)求次數(shù)與SQL調(diào)用次數(shù)的比例,平均每次請(qǐng)求觸發(fā)多少次SQL調(diào)用,架構(gòu)不合理在數(shù)據(jù)對(duì)比下顯露無(wú)遺。如下圖,1次URL平均有40多次的SQL調(diào)用,架構(gòu)上就不是很合理。
業(yè)務(wù)系統(tǒng)中業(yè)務(wù)組的數(shù)量。業(yè)務(wù)請(qǐng)求組有多少,業(yè)務(wù)請(qǐng)求有沒(méi)有進(jìn)行多合一設(shè)計(jì)或者一分多設(shè)計(jì)。
業(yè)務(wù)請(qǐng)求報(bào)文與方法。業(yè)務(wù)請(qǐng)求報(bào)文的格式(XML或JSON),主要使用的請(qǐng)求方法格式(POST或GET),這樣看到系統(tǒng)的開(kāi)發(fā)周期和安全性隱患等。
每個(gè)應(yīng)用少則擁有幾千個(gè)不同的URL,多則擁有上萬(wàn)個(gè)URL,每天的請(qǐng)求量都在十萬(wàn)級(jí)、百萬(wàn)級(jí)、千萬(wàn)級(jí)以上,這么多不同的URL和海量URL請(qǐng)求數(shù)據(jù),如何從中準(zhǔn)確找到用價(jià)值的URL并對(duì)這些關(guān)鍵的業(yè)務(wù)請(qǐng)求進(jìn)行布控即成為關(guān)鍵。
APM必須要擁有對(duì)URL智能分組統(tǒng)計(jì)的能力,并對(duì)自動(dòng)分布的URL進(jìn)行任意參數(shù)的TOP對(duì)比。如:請(qǐng)求次數(shù)最多的10個(gè)URL、相應(yīng)時(shí)間最長(zhǎng)的10個(gè)URL、錯(cuò)誤率最高的10個(gè)URL、失敗率最高的10個(gè)URL。在找到關(guān)鍵的URL后可以快速標(biāo)記并進(jìn)行自定義命名。對(duì)海量的URL請(qǐng)求可以做到自動(dòng)標(biāo)記和命名,并對(duì)重要業(yè)務(wù)進(jìn)行自動(dòng)標(biāo)記和自定義命名。智能鎖定關(guān)鍵交易后可對(duì)關(guān)鍵交易進(jìn)行精準(zhǔn)優(yōu)化和唯一策略的精準(zhǔn)告警等。
但是常常技術(shù)指標(biāo)上發(fā)現(xiàn)的URL經(jīng)常是助攻型業(yè)務(wù)請(qǐng)求,不是真正的核心業(yè)務(wù),這時(shí)候就需要開(kāi)發(fā)人員、業(yè)務(wù)人員和工具一起快速確定關(guān)鍵業(yè)務(wù)。
伴隨著各系統(tǒng)微服務(wù)化的演進(jìn),服務(wù)數(shù)量、機(jī)器規(guī)模的不斷增長(zhǎng),線上環(huán)境也變得日益復(fù)雜,工程師們每天都會(huì)面臨著這些苦惱:
1.線上系統(tǒng)出現(xiàn)故障時(shí)無(wú)法第一時(shí)間感知;
2.面對(duì)線上系統(tǒng)產(chǎn)生的海量日志,排查故障時(shí)一籌莫展;
3.系統(tǒng)內(nèi)部及系統(tǒng)間的調(diào)用鏈路產(chǎn)生故障時(shí)難以定位;
……
線上應(yīng)用的性能問(wèn)題和異常錯(cuò)誤已經(jīng)成為開(kāi)發(fā)人員和運(yùn)維人員最大的挑戰(zhàn),而排查這類問(wèn)題往往需要幾個(gè)小時(shí)甚至幾天的時(shí)間,效率低下且嚴(yán)重影響了業(yè)務(wù)發(fā)展。
高效運(yùn)維APM必須要具備一項(xiàng)能力:要做到實(shí)時(shí)告警,針對(duì)應(yīng)用層、服務(wù)器層、單業(yè)務(wù)層、用戶層等多層級(jí)多維度的告警機(jī)制,做到系統(tǒng)故障第一時(shí)間感知。在告警的同時(shí)要對(duì)故障進(jìn)行記錄,標(biāo)記故障位置,在故障排查時(shí)查看發(fā)生時(shí)的系統(tǒng)資源狀態(tài)、交易鏈調(diào)用、故障信息、組件狀態(tài)等做到還原故障現(xiàn)場(chǎng)。
APM監(jiān)控到的海量數(shù)據(jù)如果只是用來(lái)故障排查,那就大大降低了數(shù)據(jù)的價(jià)值。如何讓APM監(jiān)控的數(shù)據(jù)發(fā)揮更大價(jià)值呢?這個(gè)就需要APM擁有全量數(shù)據(jù)多維度關(guān)聯(lián)分析的能力,包括任一時(shí)段任意維度的數(shù)據(jù)環(huán)比分析,不同組件數(shù)據(jù)間的智能關(guān)聯(lián)分析。如:今天與昨天的數(shù)據(jù)對(duì)比,本周與上周的數(shù)據(jù)對(duì)比,URL請(qǐng)求與數(shù)據(jù)庫(kù)調(diào)用比例,前端與后端相應(yīng)時(shí)間對(duì)比等。
數(shù)據(jù)在未來(lái)企業(yè)發(fā)展中舉足輕重,人們常說(shuō)“得數(shù)據(jù)者得天下”。APM一直以來(lái)的職責(zé)都是依靠不斷獲取數(shù)據(jù)來(lái)完成,隨著APM的不斷發(fā)展,所獲取的數(shù)據(jù)也越來(lái)越多、越來(lái)越全面,數(shù)據(jù)的不斷積累使得APM的使命不斷豐富。新一代的APM要向應(yīng)用業(yè)務(wù)性能管理邁進(jìn),強(qiáng)調(diào)業(yè)務(wù)分析能力,幫助企業(yè)進(jìn)行業(yè)務(wù)梳理,抓住業(yè)務(wù)變化趨勢(shì)背后的需求變化,用業(yè)務(wù)數(shù)據(jù)、智能分析為企業(yè)創(chuàng)新、創(chuàng)收提供支撐。