性能壓測
性能壓測是通過模擬大量并發用戶訪問系統,測試系統在高負載情況下的性能和穩定性。通過性能壓測可以發現系統的性能瓶頸,評估系統的承載能力,并提前發現系統的性能問題和潛在風險,并為系統的容量規劃和性能優化提供參考。其實施方案主要包括:
確定測試目標和負載模型:首先需要明確測試的目標和負載模型,包括確定測試的場景、負載類型、負載量和測試時間等。
配置測試環境:為進行性能壓測,需要先搭建測試環境,包括硬件設備、網絡環境和測試工具等。包括開源和云上平臺已有的比如PTS等
制定測試計劃和測試腳本:為確保測試的可重復性和準確性,需要制定詳細的測試計劃和測試腳本,包括測試場景、測試數據和測試結果的分析方法等。
進行測試和數據分析:執行測試腳本并記錄測試結果,包括對系統的響應時間、吞吐量、并發用戶數、CPU和內存使用率等指標進行監測和記錄,然后對測試數據進行分析和評估,確定系統的性能瓶頸和優化方案。
性能優化和再次測試:根據測試結果進行性能優化,包括對系統的硬件設備、網絡環境和應用程序等進行優化,然后再次進行性能測試,以確認性能是否得到改善。
性能壓測包括單點和全鏈路在內的檢查測試。通過性能壓測,可以在業務系統上線前發現潛在的性能問題,并為系統的容量規劃和性能優化提供參考。
目前主流的幾種性能壓測工具,包括阿里云PTS、Apache JMeter、ApacheBench(ab)、wrk等,其對比項結果參考如下。
對比項 | 阿里云PTS | Apache JMeter | ApacheBench | wrk | |
成本 | 學習成本 | 低 | 中 | 低 | 低 |
部署、運維成本 | SaaS服務,免部署 | 單機部署成本低、分布式部署成本高 | 低 | 低 | |
是否收費 | 是 | 開源、免費 | 開源、免費 | 開源、免費 | |
分布式能力 | 是否支持分布式施壓 | 是 | 是,但部署、運維成本高 | 否 | 否 |
壓測引擎能力 | 單機性能 、穩定性 | 自研引擎,高 | 低 | 中 | 高 |
是否支持多協議 | 支持 | 支持 | 不支持 | 不支持 | |
施壓量級 | 高,最大百萬并發、千萬TPS | 低 | 低 | 低 | |
壓測場景構造 | 是否支持客戶端錄制流量 | 支持,支持Chrome/iOS/Android錄制器 | 不支持 | 不支持 | 不支持 |
是否支持流程編排 | 支持,無需編碼 | 支持 | 不支持 | 不支持 | |
是否支持出參提取、斷言、邏輯控制器等 | 支持 | 支持 | 不支持 | 不支持 | |
壓測數據構造 | 是否支持文件數據源 | 支持 | 支持 | 不支持 | 不支持 |
是否支持從DB中讀取數據作為壓測數據源 | 支持 | 不支持 ,需自己實現 | 不支持 | 不支持 | |
是否支持使用函數生成或者二次加工壓測數據 | 支持 | 支持 | 不支持 | 不支持 | |
壓測模型構造 | 是否支持并發模型 | 支持 | 支持 | 支持 | 支持 |
是否支持吞吐量模型 | 支持 | 不支持 | 支持 | 支持 | |
是否支持流量漏斗模型 | 支持 | 不支持 | 不支持 | 不支持 | |
是否支持自動遞增、階梯遞增等流量模型 | 支持 | 支持 | 不支持 | 不支持 | |
壓測流量構造 | 是否支持多地域流量定制 | 支持 | 不支持,依賴自己部署 | 不支持,依賴自己部署 | 不支持,依賴自己部署 |
是否支持IPv6流量 | 支持 | 不支持,依賴自己部署 | 不支持,依賴自己部署 | 不支持,依賴自己部署 | |
壓測流量控制 | 是否支持壓測過程中手動調速 | 支持 | 不支持 | 不支持 | 不支持 |
是否支持施壓過程中動態擴展最大壓力、施壓機引擎 | 支持 | 不支持 | 不支持 | 不支持 | |
壓測數據可視化 | 是否支持壓測過程中多維度實時指標監控 | 實時秒級數據、多維度分析 | 支持,但分析維度有限 | 不支持 | 不支持 |
是否支持壓測報告 | 支持完整壓測報告 | 支持,報告較簡單 | 支持,報告較簡單 | 支持,報告較簡單 | |
是否支持關聯被壓系統監控數據 | 支持,可關聯阿里云云監控數據 | 不支持 | 不支持 | 不支持 | |
是否支持性能基線能力 | 支持 | 不支持 | 不支持 | 不支持 |
具體可以參考高效性能支柱中相關的內容。