京東金融移動(dòng)端全鏈路壓測(cè)歷時(shí)三個(gè)月,測(cè)試和服務(wù)端同學(xué)經(jīng)過無數(shù)日日夜夜,通宵達(dá)旦,終于完成了移動(dòng)端鏈路的測(cè)試任務(wù)。整個(gè)測(cè)試有部分涉及到公司敏感數(shù)據(jù),本文只對(duì)策略部分進(jìn)行論述。
1.系統(tǒng)架構(gòu)與策略
在聊性能測(cè)試之前,簡(jiǎn)單的對(duì)金融系統(tǒng)架構(gòu)進(jìn)行簡(jiǎn)單的梳理。京東金融App架構(gòu)較為復(fù)雜,為了說明問題對(duì)架構(gòu)進(jìn)行簡(jiǎn)化和抽象。
金融App客戶端主要是通過原生主框架和運(yùn)營(yíng)平臺(tái)(樂高)配置搭建組成App客戶端;主框架和運(yùn)營(yíng)平臺(tái)(樂高)通過調(diào)用網(wǎng)關(guān)接口連接各個(gè)業(yè)務(wù)系統(tǒng)。實(shí)現(xiàn)整個(gè)業(yè)務(wù)正常運(yùn)轉(zhuǎn)。金融App移動(dòng)端618專項(xiàng)測(cè)試包含App客戶端專項(xiàng)測(cè)試和App鏈路服務(wù)端性能兩部分內(nèi)容,本文主要對(duì)App鏈路服務(wù)端性能進(jìn)行簡(jiǎn)單說明。

根據(jù)架構(gòu)特點(diǎn)和業(yè)務(wù)特點(diǎn),將金融移動(dòng)App鏈路服務(wù)端性能測(cè)試。共分為三個(gè)階段,服務(wù)端基礎(chǔ)能力測(cè)試、服務(wù)端相關(guān)業(yè)務(wù)鏈路測(cè)試、服務(wù)端全鏈路預(yù)演等三個(gè)階段。
2.測(cè)試方案及實(shí)施要點(diǎn)
通過對(duì)移動(dòng)端業(yè)務(wù)的特點(diǎn)和架構(gòu)綜合分析,將移動(dòng)端鏈路分為三個(gè)階段進(jìn)行測(cè)試,每個(gè)測(cè)試階段側(cè)重點(diǎn)和目標(biāo)不同,通過分階段實(shí)施,一步步測(cè)試和驗(yàn)證金融App鏈路是否能夠完成并滿足618業(yè)務(wù)要求。
在本次618備戰(zhàn)服務(wù)端測(cè)試主要分三個(gè)階段,第一階段主要進(jìn)行服務(wù)端能力和故障模擬;第二階段主要進(jìn)行業(yè)務(wù)能力測(cè)試和業(yè)務(wù)鏈路性能測(cè)試。第三階段主要進(jìn)行全鏈路壓測(cè),模擬線上用戶在高并發(fā)下服務(wù)端各業(yè)務(wù)的表現(xiàn)及業(yè)務(wù)升降級(jí)演練。
1)服務(wù)端能力及服務(wù)故障模擬階段
服務(wù)端第一輪性能測(cè)試,涉及核心業(yè)務(wù)網(wǎng)關(guān)和樂高基礎(chǔ)能力性能測(cè)試。
通過模擬正常業(yè)務(wù)、業(yè)務(wù)超時(shí)、應(yīng)答錯(cuò)誤,業(yè)務(wù)方無響應(yīng)、業(yè)務(wù)數(shù)據(jù)包超大,業(yè)務(wù)數(shù)據(jù)包丟失,業(yè)務(wù)數(shù)據(jù)包不完整、接口限流等業(yè)務(wù)能力。DB不可用、連接數(shù)占滿、硬盤,應(yīng)用服務(wù)器硬盤沾滿、應(yīng)用服務(wù)器cpu過高、內(nèi)存過高等系統(tǒng)資源問題,以及樂高或網(wǎng)管系統(tǒng)擴(kuò)容和縮容測(cè)試。
通過模擬各種異常情況驗(yàn)證系統(tǒng)基礎(chǔ)能力是否滿足高峰期間業(yè)務(wù)流量。

第一階段性能測(cè)試難度較大,一則是因?yàn)榛A(chǔ)能力測(cè)試和傳統(tǒng)業(yè)務(wù)測(cè)試在思考方式上有較大差異;另外基礎(chǔ)能力測(cè)試需要模擬各種異常情況,需要高度抽象各種業(yè)務(wù)情況,需要編寫各種模擬代碼,對(duì)傳統(tǒng)測(cè)試能力要求較高。
2)基礎(chǔ)能力業(yè)務(wù)測(cè)試和業(yè)務(wù)鏈路性能測(cè)試
服務(wù)端第二輪性能測(cè)試,包含兩部分內(nèi)容,一部分主要是對(duì)第一階段測(cè)試基礎(chǔ)能力(樂高、網(wǎng)關(guān))系統(tǒng)接入真實(shí)的業(yè)務(wù)進(jìn)行業(yè)務(wù)性能測(cè)試。在接入業(yè)務(wù)時(shí)測(cè)試時(shí),網(wǎng)關(guān)系統(tǒng)接入下游業(yè)務(wù)策略是選擇高峰時(shí)期top30的業(yè)務(wù)接口進(jìn)行進(jìn)行測(cè)試。樂高系統(tǒng)通過線上流量復(fù)制,按照線上調(diào)用業(yè)務(wù)模板的比例進(jìn)行等比配置,覆蓋所有模板實(shí)例,確保趨近于模擬線上真實(shí)業(yè)務(wù)模板實(shí)例和后臺(tái)接口測(cè)試樂高系統(tǒng)。
在選擇接入下游系統(tǒng)數(shù)據(jù)和接口時(shí),選擇的策略不同,測(cè)試的結(jié)果差異較大,所以采用什么樣的選擇策略就顯得尤為重要。
另外一部分是App基礎(chǔ)業(yè)務(wù)、高頻和關(guān)鍵業(yè)務(wù)性能測(cè)試,這部分主要通過對(duì)單業(yè)務(wù)或者單業(yè)務(wù)鏈路的測(cè)試,驗(yàn)證該業(yè)務(wù)鏈路是否滿足系統(tǒng)要求。這部分和大部分公司日常的性能測(cè)試方案和方法一致。在此不再贅述。
另外在此階段有一個(gè)非常重要測(cè)試演練,不斷要測(cè)試集群的性能,還需要進(jìn)行單機(jī)的性能,根據(jù)擴(kuò)容行測(cè)試,評(píng)估和預(yù)測(cè)擴(kuò)容機(jī)器。
3)測(cè)試服務(wù)端全鏈路預(yù)演
基于前面兩個(gè)階段對(duì)基礎(chǔ)能力性能測(cè)試和基礎(chǔ)業(yè)務(wù)、高頻業(yè)務(wù)、基礎(chǔ)業(yè)務(wù)、活動(dòng)等業(yè)務(wù)的性能測(cè)試和評(píng)估,各業(yè)務(wù)根據(jù)618移動(dòng)端鏈路流量預(yù)估,形成整體移動(dòng)端鏈路壓測(cè)方案。關(guān)于全鏈路壓測(cè)網(wǎng)上的方案非常之多,本文不在贅述。
在第三個(gè)階段,除了驗(yàn)證業(yè)務(wù)支撐能力,能不能滿足預(yù)估流量;還需要重點(diǎn)關(guān)注高峰時(shí)段流量對(duì)App業(yè)務(wù)影響,并根據(jù)壓測(cè)情況對(duì)業(yè)務(wù)實(shí)時(shí)升降級(jí)處理。如果超過預(yù)估流量或者發(fā)生意外時(shí),那些業(yè)務(wù)可以進(jìn)行降級(jí),如果降級(jí),會(huì)不會(huì)影響到其他業(yè)務(wù)等等。
此階段重要的一個(gè)任務(wù)就是演練,模擬演練618洪峰流量對(duì)業(yè)務(wù)對(duì)App的影響,性能測(cè)試需要測(cè)試和評(píng)估出每個(gè)業(yè)務(wù)升降級(jí)的臨界數(shù)據(jù),配合開發(fā)和運(yùn)維同學(xué)在測(cè)試過程中進(jìn)行故障模擬和演練。
3.總結(jié)
全鏈路壓測(cè)和平常壓測(cè)的一個(gè)很重要的區(qū)別是,全鏈路壓測(cè)是證明容量規(guī)劃的準(zhǔn)確,流量控制策略得當(dāng)。流量控制策略最核心的可以做到限流分流降級(jí),限流分流降級(jí)說起來很容易,但需要開發(fā)、測(cè)試同學(xué)在前期做好大量工作,業(yè)務(wù)是否做到解耦和具備升降級(jí)能力,測(cè)試同學(xué)是否通過測(cè)試準(zhǔn)確的驗(yàn)證容量規(guī)劃的合理性,業(yè)務(wù)升降級(jí)的臨界值是否合理得當(dāng)?shù)鹊取?/p>
4.感謝
整個(gè)任務(wù)完成之時(shí),還害怕哪塊沒準(zhǔn)備好,有點(diǎn)擔(dān)心。但在6月1號(hào)寫完此文,內(nèi)心無比堅(jiān)定的認(rèn)為這次備戰(zhàn)肯定是成功的。寫此文一則是為了總結(jié)經(jīng)驗(yàn),二則是為了感謝為此次備戰(zhàn)準(zhǔn)備了三個(gè)月身邊的小伙伴。
感謝為保障這次測(cè)試任務(wù)的所有移動(dòng)端測(cè)試同學(xué),在那么短的時(shí)間,那么少的人手,完成了幾乎是平常工作量2倍的工作,你們是最棒的,感謝你們。
感謝移動(dòng)端開發(fā),幫忙一塊梳理業(yè)務(wù),每個(gè)邊邊角角都幫我們補(bǔ)充到。喜歡你們認(rèn)真的樣子。
感謝服務(wù)端的同學(xué),不厭其煩的配合我們一次次調(diào)試差問題,和我們一起加班,一起看星星,一起看日出,一起悲傷,一起歡樂。
當(dāng)然必須再此感謝所有參與這次移動(dòng)端鏈路功能專項(xiàng)測(cè)試,客戶端專項(xiàng)性能測(cè)試,服務(wù)端的同學(xué)。
寫在后面的話:完美的遺憾
整體來說本次移動(dòng)端鏈路備戰(zhàn)非常成功,但有個(gè)小小的遺憾,在618當(dāng)天晚上八點(diǎn)活動(dòng)中因?yàn)樗查g業(yè)務(wù)(5秒)訪問新高,觸發(fā)熔斷機(jī)制,導(dǎo)致業(yè)務(wù)失敗率較高。出現(xiàn)瞬間訪問過高的原因是因?yàn)榛顒?dòng)結(jié)束后,用戶瞬間返回主頁(yè)面,導(dǎo)致主頁(yè)面業(yè)務(wù)訪問量過高。
建議后期在業(yè)務(wù)設(shè)計(jì)時(shí)一定要考慮業(yè)務(wù)完成的情況,盡可能建立多層級(jí)的業(yè)務(wù)分流機(jī)制。避免業(yè)務(wù)完成時(shí)的瞬間訪問量發(fā)生。同時(shí)也要建立自動(dòng)降級(jí)的策略,防止業(yè)務(wù)瞬間訪問量上升導(dǎo)致的降級(jí)策略失效的問題。
如果你喜歡我的文章,歡迎關(guān)注掃描公眾賬號(hào):MiniStarClub