Load Testing and Benchmarking With siege vs wrk
我一直在寻找可以帮助我进行负载测试和基准测试的工具。 我找到了几个像:
- https://github.com/wg/wrk
- http://www.joedog.org/siege-home/
- https://github.com/rakyll/boom
我想知道是否有人对这些工具有任何经验,对这些工具有何利弊。 我的负载压力将包括使用DELETE,PUT,GET,POST等标头的不同测试用例。
负载测试和基准测试工具
按字母顺序列出。
ab:慢速单线程,用C编写
apib:ApacheBench(ab)的大多数功能,也设计为更现代的替代程序,用C编写
baloo:使用Go(golang)编写的易于表达的端到端HTTP API测试
警棍:使用Go(golang)编写的HTTP负载测试
bombardier:使用Go(golang)编写的快速跨平台HTTP基准测试工具
curl-loader:使用C编写的各种应用程序服务的性能加载和流量生成
演练:受Ansible语法启发的HTTP负载测试应用程序,用Rust编写
fasthttploader:基准(kinda ab),具有基于fasthttp库的自动调整和图表,用Go语言编写(golang)
fortio:负载测试库和命令行工具以及Web UI。允许指定设置的每秒查询负载并记录延迟直方图和其他有用的统计信息,并以Go语言编写(golang)
gatling:基于Scala,Akka和Netty的高性能负载测试框架,用Scala编写
go-wrk:基于出色的wrk工具(wg / wrk)精髓的HTTP基准测试工具,用Go语言编写(golang)
goad:AWS Lambda支持的,高度分布式的负载测试工具,用Go语言编写(golang)
gobench:HTTP / HTTPS负载测试和基准测试工具,用Go语言编写(golang)
gohttpbench:类似ab的基准测试工具,在多核cpu上运行,用Go语言编写(golang)
嘿:HTTP(S)负载生成器,用Go(golang)编写的ApacheBench(ab)替代品,以前称为rakyll / boom
htstress:用C / Linux编写的多线程高负载标记服务(> 5K rps)
httperf:困难的配置,速度慢且单线程,用C编写
泛滥者:简单,高吞吐量的HTTP Flood程序,用C / Linux编写
jmeter:Apache JMeter ?,纯粹的应用程序,旨在以静态语言和动态资源加载测试性能,用Java编写
k6:可在ES6 JS中编写脚本的现代负载测试工具,支持以Go(golang)编写的HTTP / 1.1,HTTP / 2.0和WebSocket
蝗虫:具有实时Web UI的易于使用的分布式负载测试工具。模拟大量并发用户,每个用户的行为由python代码定义。用Python编写
mgun:用Go语言编写的用于测试HTTP服务器负载的现代工具(golang)
pounce:事件,但结果波动,有时比htstress更快,用C语言编写
攻城:慢速且单线程,用C编写
拍板:简单的负载测试工具,带有实时更新的请求时间直方图,以Go语言编写(golang)
slow_cooker:负载测试器专注于生命周期问题和长期运行的测试,长期以来具有可预测的负载和并发水平的服务,以Go语言编写(golang)
狙击手:功能强大且高性能的http负载测试器,用Go(golang)编写
tsung:模拟压力用户,以测试用Erlang编写的基于IP的客户端/服务器应用程序HTTP,WebDAV,SOAP,PostgreSQL,MySQL,LDAP和Jabber / XMPP服务器的可伸缩性和性能
vegeta:使用Go(golang)编写的HTTP负载测试工具和库
weighttp:多线程,但比不使用keepalive的htstress慢,用C编写
wrk:多线程,用C / Lua编写
wrk2:恒定吞吐量,正确的wrk延迟记录变体,用C / Lua编写
yandex-tank:负载和性能基准测试工具,用Python / C | C ++ | Asm(幻像)编写
描述从这里开始。
我使用过wrk和siege,siege是一个非常易于使用的工具,但是我不确定是否可以使用siege测试DELETE或PUT。
Wrk可以使用提供的lua脚本生成请求,因此DELETE和PUT不会成为问题。 AND wrk是一个可以超越NGINX静态文件服务器的工具,因此我认为它足够快来进行通用负载测试。
我从未使用过@Direvius建议的boom或Yandex.tank,基本上是因为wrk很简单并且可以满足我们的需求。 但是JMeter对我来说太复杂了。
我从未使用过任何这些方法,但是我听到了一些有关wrk的正面评价。
我认为,您还应该尝试非常流行的Jmeter,也许还可以尝试Yandex.tank,这是我们LT部门用于大多数Web服务的工具。