本文選取了目前主流的幾種性能壓測工具,包括阿里云PTS、Apache JMeter、ApacheBench(ab)、wrk,為您從多方面分析這些壓測工具的優缺點。
阿里云PTS
性能測試PTS(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流量 | 支持 | 不支持,依賴自己部署 | 不支持,依賴自己部署 | 不支持,依賴自己部署 | |
壓測流量控制 | 是否支持壓測過程中手動調速 | 支持 | 不支持 | 不支持 | 不支持 |
是否支持施壓過程中動態擴展最大壓力、施壓機引擎 | 支持 | 不支持 | 不支持 | 不支持 | |
壓測數據可視化 | 是否支持壓測過程中多維度實時指標監控 | 實時秒級數據、多維度分析 | 支持,但分析維度有限 | 不支持 | 不支持 |
是否支持壓測報告 | 支持完整壓測報告 | 支持,報告較簡單 | 支持,報告較簡單 | 支持,報告較簡單 | |
是否支持關聯被壓系統監控數據 | 支持,可關聯阿里云云監控數據 | 不支持 | 不支持 | 不支持 | |
是否支持性能基線能力 | 支持 | 不支持 | 不支持 | 不支持 |