本文選取了目前主流的幾種效能壓測工具,包括阿里雲PTS、Apache JMeter、ApacheBench(ab)、wrk,為您從多方面分析這些壓測工具的優缺點。
阿里雲PTS
Performance Testing Service(Performance Testing Service)是阿里雲一款商業化的效能測試工具。支援按需發起壓測任務,可支援百萬並發、千萬TPS流量發起能力,100%相容JMeter。PTS支援的情境編排、API調試、流量定製、流量錄製等功能,可快速建立業務壓測指令碼,精準類比不同量級使用者訪問業務系統,協助業務快速提升系統效能和穩定性。
阿里雲PTS具備如下特性:
免營運、開箱即用
SaaS化施壓、最大支援百萬級並發、千萬級TPS流量自助發起能力。
支援多協議
支援HTTP1.1/HTTP2/JDBC/MQTT/Kafka/RocketMQ/Redis/WebSocket/RMTP/HLS/TCP/UDP/Spring Cloud/Dubbo/gRPC等主流協議。
支援流量定製
支援全球施壓地區定製、電訊廠商流量定製、IPv6流量定製。
穩定、安全
阿里自研引擎,基於訊號量模型,單機支援超高並發,曆經多年阿里雙十一情境驗證可輕鬆類比億層級流量,更加穩定和安全。
效能壓測一站式解決方案
無需編碼即可構建複雜壓測情境。覆蓋壓測情境構建、壓測模型設定、啟動壓測、分析定位問題、查看壓測報告等完整的壓測生命週期。
100%相容開源JMeter
Apache JMeter
Apache JMeter是Apache組織開發的基於Java的壓力測試工具。Apache JMeter具備如下特性:
支援分布式施壓。
支援圖形化介面,且支援流程編排,同時支援斷言、邏輯控制器等進階指令,可滿足複雜業務壓測需求。
擴充性強,開發、測試人員可通過編寫自己的外掛程式,滿足各種壓測需求。
技術生態好,有強大的開源社區支援,開發人員活躍度高。
支援查看資源監控、效能報告,但可查看的監控和報告指標較少。
基於並行存取模型,受限於JVM,單機無法支援超高並發。且只支援並發施壓模型,不支援輸送量施壓模型。
開源支援的分布式能力無法大規模應用到生產環境,部署成本高。
不支援測試案例管理、壓測指令碼管理等功能。
ApacheBench
ApacheBench(ab)是一款針對HTTP協議做效能壓測的命令列工具。ApacheBench具備如下特性:
具有較好的擴充性。
支援協議單一。對HTTP協議支援度較好,不支援主流的HTTPS、WebSocket等協議。
支援要求總數、並發數、壓測時間長度控制。
作為一款命令列壓測工具,上手較為簡單。
單機壓測工具,無分布式施壓能力,無可視化介面。
不支援鏈路編排、情境管理等功能,無法做帶業務含義的複雜壓測。
單次壓測,只能對單個網域名稱或地址發起流量請求。
壓測統計指標維度少,缺少壓測過程中的統計資料,無法擷取系統負載等指標。
wrk
wrk是一款針對HTTP協議的基準測試載入器。wrk具備如下特性:
輕量級效能測試工具,安裝簡單。
學習成本低。
基於非同步事件驅動架構,單機支援高並發。
單機壓測工具,無分布式施壓能力。
只支援HTTP協議。
無可視化介面,不支援流程編排、斷言等能力,無法滿足複雜壓測需求。
總結
對比項 | 阿里雲PTS | Apache JMeter | ApacheBench | wrk | |
成本 | 學習成本 | 低 | 中 | 低 | 低 |
部署、營運成本 | SaaS服務,免部署 | 單機部署成本低、分布式部署成本高 | 低 | 低 | |
是否收費 | 是 | 開源、免費 | 開源、免費 | 開源、免費 | |
分布式能力 | 是否支援分布式施壓 | 是 | 是,但部署、營運成本高 | 否 | 否 |
壓測引擎能力 | 單機效能 、穩定性 | 自研引擎,高 | 低 | 中 | 高 |
是否支援多協議 | 支援 | 支援 | 不支援 | 不支援 | |
施壓量級 | 高,最大百萬並發、千萬TPS | 低 | 低 | 低 | |
壓測情境構造 | 是否支援用戶端錄製流量 | 支援,支援Chrome/iOS/Android錄製器 | 不支援 | 不支援 | 不支援 |
是否支援流程編排 | 支援,無需編碼 | 支援 | 不支援 | 不支援 | |
是否支援出參提取、斷言、邏輯控制器等 | 支援 | 支援 | 不支援 | 不支援 | |
壓測資料構造 | 是否支援檔案資料來源 | 支援 | 支援 | 不支援 | 不支援 |
是否支援從DB中讀取資料作為壓測資料來源 | 支援 | 不支援 ,需自己實現 | 不支援 | 不支援 | |
是否支援使用函數產生或者二次加工壓測資料 | 支援 | 支援 | 不支援 | 不支援 | |
壓測模型構造 | 是否支援並行存取模型 | 支援 | 支援 | 支援 | 支援 |
是否支援輸送量模型 | 支援 | 不支援 | 支援 | 支援 | |
是否支援流量漏鬥模型 | 支援 | 不支援 | 不支援 | 不支援 | |
是否支援自動遞增、階梯遞增等流量模型 | 支援 | 支援 | 不支援 | 不支援 | |
壓測流量構造 | 是否支援多地區流量定製 | 支援 | 不支援,依賴自己部署 | 不支援,依賴自己部署 | 不支援,依賴自己部署 |
是否支援IPv6流量 | 支援 | 不支援,依賴自己部署 | 不支援,依賴自己部署 | 不支援,依賴自己部署 | |
壓測流量控制 | 是否支援壓測過程中手動調速 | 支援 | 不支援 | 不支援 | 不支援 |
是否支援施壓過程中動態擴充最大壓力、施壓機引擎 | 支援 | 不支援 | 不支援 | 不支援 | |
壓測資料視覺效果 | 是否支援壓測過程中多維度即時指標監控 | 即時秒級資料、多維度分析 | 支援,但分析維度有限 | 不支援 | 不支援 |
是否支援壓測報告 | 支援完整壓測報告 | 支援,報告較簡單 | 支援,報告較簡單 | 支援,報告較簡單 | |
是否支援關聯被壓系統監控資料 | 支援,可關聯阿里雲CloudMonitor資料 | 不支援 | 不支援 | 不支援 | |
是否支援效能基準能力 | 支援 | 不支援 | 不支援 | 不支援 | |