不同性能压测工具对比

本文选取了目前主流的几种性能压测工具,包括阿里云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流量

支持

不支持,依赖自己部署

不支持,依赖自己部署

不支持,依赖自己部署

压测流量控制

是否支持压测过程中手动调速

支持

不支持

不支持

不支持

是否支持施压过程中动态扩展最大压力、施压机引擎

支持

不支持

不支持

不支持

压测数据可视化

是否支持压测过程中多维度实时指标监控

实时秒级数据、多维度分析

支持,但分析维度有限

不支持

不支持

是否支持压测报告

支持完整压测报告

支持,报告较简单

支持,报告较简单

支持,报告较简单

是否支持关联被压系统监控数据

支持,可关联阿里云云监控数据

不支持

不支持

不支持

是否支持性能基线能力

支持

不支持

不支持

不支持