壓測實戰 | 記錄一次元旦跨年夜的測試保障

优测云服务平台發表於2024-12-26

使用者的跨年夜,技術人的驚魂夜。

在網際網路多媒體時代,圖片、影片等型別的應用越來越豐富,一些特殊時刻,會有海量使用者同時釋出多媒體內容。以大家熟知的一個社交類應用為例,因其社交性、高併發、瞬時峰值的特點,在元旦零點前後的跨年時刻,讀/寫流量可達平日的 10 至 20 倍,迎來全年巔峰。

專案背景

前面提到的社交軟體,其元旦和春節期間讀鏈路和寫鏈路分不同會數倍的流量飆升。其中,針對只讀鏈路可以透過叢集流量排程做到讀鏈路的壓測,但是寫鏈路的壓測由於測試資料構造複雜,用例編寫成本高,是一個亟待解決的問題。

壓測目標

在這次任務中,業務鏈路壓測的特點是請求鏈路較短,只涉及兩個請求,而難點則集中在以下方面:

●協議多,包含 HTTP、RPC 以及其他私有協議;

●業務是多地分佈的,需支援分散式、多地域壓測流量定製;

●模擬跨年零點,流量大、時間集中,需快速模擬大規模使用者進行寫操作;

●需支援請求上下文引數動態串聯,模擬使用者登入後,以登入態進行後續操作;

●需支援自定義資料處理,在指令碼邏輯裡對測試資料資料進行清洗;

●除了文字內容,還需模擬圖片內容的發表,並保證帶圖發壓也能瞬時達峰;

●需能設定檢查點,根據介面返回值,按照業務邏輯檢查介面呼叫成功與否;

●元旦保障時間緊任務重,壓測工具需能開箱即用、快速編排場景、易於分析結果。

壓測方法

為了 100% 滿足上述需求和目標,具體的實施方法如下:

1.選擇建立模式,本次壓測採用指令碼模式;

2.上傳包含相關測試資料的 csv 檔案,並設定切分檔案由不同施壓機並行讀取;

3.上傳所依賴的協議檔案;

4.上傳被測介面所需的圖片檔案;

5.施壓配置併發、多地域流量定製、梯度發壓;

6.參考平臺提供的指令碼模板,編寫請求鏈路,並藉助協議支援、資料處理等 API,完成指令碼邏輯;

7.藉助平臺設定檢查點的 API,檢查介面返回值,按業務邏輯判斷介面呼叫成功與否。

壓力配置頁面(演示資料):

結果分析

在 2 天內我們共進行了 8 輪次壓測,逐步增加壓力、增大地域覆蓋。透過壓測平臺提供的指標數值、多維度圖表、服務明細、檢查點明細、日誌等資訊,分析系統在不同壓力程度下的錯誤率、延時等效能表現,並結合業務自身監控指標的變化,判斷業務的可用性和穩定性是否達到預期、或反映出哪些需要解決的問題。

在壓測報告中,我們重點關注的指標如下:

●VU:虛擬使用者數,用來模擬真實場景中同時執行操作的使用者數量,也叫 “併發使用者數”

●RPS:每秒請求數,反映系統處理能力,越大越好

●響應時間:從客戶端傳送請求到客戶端接到伺服器返回的時間

●失敗率:一批請求中結果出錯的請求所佔比例,以校驗響應結果是否符合期望

壓測報告介面(演示資料):

工具選擇

在工具側的選擇上使用的是騰訊旗下的一款工具—優測壓力測試平臺,以同時滿足的多地域、百萬併發、多協議支援的要求。另外,基於專案週期的緊迫性,該工具 SaaS 化和開箱即用的模式也很好地滿足了時間和成本的需求。

相關文章