写点什么

Open Source Load Testing Tool Review 2020

发布于: 2021 年 04 月 21 日
Open Source Load Testing Tool Review 2020

Ragnar Lönn, 04 MARCH 2020

原文地址:https://k6.io/blog/comparing-best-open-source-load-testing-tools

摘要

今年想在 DevOps 平台上集成一些性能测试的工具,方便开发团队自助进行性能测试,调研了一些工具,分享其中一篇文章。


这篇文章的作者分别在 17 年和 20 年对市面上的性能测试工具进行了详细的比较和评测,内容非常翔实,他自己也是其中 k6 工具的作者。


文中参与评测的 12 款工具的清单如下:


Apachebench 2.3Artillery 1.6.0Drill 0.5.0 (new)Gatling 3.3.1Hey 0.1.2Jmeter 5.2.1k6 0.26.0Locust 0.13.5Siege 4.0.4Tsung 1.7.0Vegeta 12.7.0Wrk 4.1.0
复制代码


文章主要关注众多测试工具的两方面内容:一是性能表现如何,二是易用性如何。


主要内容

  • 介绍了各个工具的基本信息,包括 License、实现的语言、脚本化/多线程/分布式支持等,今年 Drill 作为唯一的 Rust 实现的工具被加入比较,简单数了一下其他语言实现的数量:C 语言 3,NodeJS 1, Scala 1,Go 3,Java 1,Python 1,Erlang 1。

  • 比较各个工具的开发活跃度,Jmeter、k6、Gatling、Locust 最活跃,wrk 改动较少,Apachebench 没怎么维护了

  • 介绍各个工具的历史和背景,Wrk 看起来非常稳定和性能强大,缺点就是不支持 HTTP/2 和一些新功能,Hey 的输出很简洁清晰,在支持脚本化的工具中 Locust 被认为很棒,当然从作者的角度 k6 是最好的。

  • 介绍了性能测试的一些观察指标,例如 CPU 负载、内存消耗、网络延迟、网络带宽,以及这些指标对理论性能的约束。

  • 文章测试了工具的最大流量生成能力、每个虚拟用户(VU)的平均内存消耗、每笔请求的平均内存消耗、响应时间的测量精准度。

  • 最大流量生成能力,Wrk 独树一帜(5w RPS),Hey 紧随其后(1.8w RPS),k6 1.1w,Jmeter 7000,Locust 2900, Drill 拉胯。

  • 内存占用方面,Java 和 Python 的工具内存消耗最大,C 和 Go 编写的表现更好。通过观察每个虚拟用户的平均内存消耗和每笔请求的平均内存消耗,作者发现除了 Jmeter,大部分工具的内存占用并不会随着 VU 的增长而增长。

  • 在响应时间的测量精准度方面,Wrk 产生了 4.5w RPS,但是响应时间中位数为 1.79ms(Amazing),而 Artillery 只有 266 RPS,响应时间中位数高达 158ms。

  • 测试总结,Gatling 更像现代版的 Jmeter,Hey 很适合简单的命令行测试,Vegeta 适合更复杂一些的命令行测试场景,Jmeter 太笨重也许适合非开发者用户,作者推荐在面向开发者的自动化测试场景使用 k6,推荐喜欢用 Python 写测试脚本的用户使用 Locust,推荐在希望产生海量请求的场景使用 Wrk。


最后,文章的评论中有人提到了一些不错的工具,例如 Grinder(Java)、Yandex Tank(Python),也有人提到 Gatling 的测试成绩有偏差,作者重新经过 warm up 之后测试能达到 4000 RPS,比 Jmeter 要快

后记

这些工具里面之前用得多的就是 Jmeter,看完文章后去了解了下 Gatling,可惜只有企业版有很完善的可视化报告界面,相比之下 k6 的做法更好,没有配套的界面,但是度量数据可以输出到 Kafka、InfluxDB + Grafana 等工具中,方便与企业已有的可视化工具集成,k6 的文档也很规范完善,本身是完全开源的,适合与 DevOps 工具集成。


访问作者技术博客浏览更多文章



发布于: 2021 年 04 月 21 日阅读数: 17
用户头像

吃货开发者的探索 2014.08.16 加入

金融科技架构师

评论

发布
暂无评论
Open Source Load Testing Tool Review 2020