在每年的雙十一大促之前,除了全鏈路壓測,還需要各個業務方對自己業務提供的核心接口進行單接口壓測,以評判系統的穩定性和承壓能力。
一、准備工作
- 環境准備:確保應用性能環境(perf)正常可用
- 壓測接口梳理:通過 ops平台 - 應用 - 監控模塊 [示例] 獲取頻繁訪問的接口,確定需要壓測的接口列表
- 測試數據准備:根據接口請求的參數列表,從qa庫中撈取需要的測試數據,導出到csv備用
二、壓測腳本編寫(jmeter版本3.2)
A: Nova或Dubbo接口
- 這類接口的壓測需要借助jmeter的高級功能,通過jar包的方式執行dubbo接口
- 腳本編寫參考 git@gitlab.qima-inc.com:qa/bit-performance.git 工程,原理就是使用jmeter提供的插件,獲取jmeter中配置的參數,並執行dubbo接口調用和預期的返回結果校驗。其中要直連perf環境的ip:port
- 腳本編寫完並且測試通過之后,打包 (mvn clean install -e -U -Dmaven.test.skip -Pperf -Denvironment=perf)
- 將打包的文件copy到 jmeter目錄下的 ../lib/ext/ 目錄
- 啟動jmeter,創建一個Simpler為java的請求時,即可加載我們配置的jar
- 將參數設置為從csv文件獲取,這里需要注意幾點:
- 如果csv文件中第一行有標題,那需要Ignore first line
- 在本地調試腳本的時候,cas的路徑是本地相對路徑,如果上傳到壓測平台時,需要修改為和jmx文件的相對路徑,即相同路徑
- 如果你不需要將csv中的參數增加引號,設置Allow quoted data為false
B: Http接口
- http接口不需要額外寫請求工程,直接配置jmx文件
- 其他內容和dubbo接口類似
C:壓力模型配置
- jmeter插件支持Concurrency Thread Group,需要添加jar包
- 使用原生的壓力模型
三、壓測平台執行
參考性能測試平台使用幫助 和 性能測試平台如何獲取監控數據,保證能正確使用性能平台,並且能獲取監控數據
- 設置好業務線、應用,並配置測試計划,將所有需要的dubbo壓測腳本jar、jmx、csv、依賴的concurrency jar包全部上傳到測試計划中
- 測試任務中,需要配置應用機器和進程號,以確認能收集到正確數據
- 查看壓測結果,看qps、rt、系統負載、錯誤率,評估性能