使用围攻vs wrk进行负载测试和基准测试

时间:2014-03-18 21:17:00

标签: benchmarking performance-testing stress-testing siege wrk

我一直在寻找可以帮助我进行负载测试和基准测试的工具。我找到了以下情侣:https://github.com/wg/wrkhttp://www.joedog.org/siege-home/https://github.com/rakyll/boom。我想知道是否有人对这些工具有任何经验,并且对这些工具有任何反馈意见。我的负载压力将包括使用DELETE,PUT,GET,POST ... header

的不同测试用例

由于

3 个答案:

答案 0 :(得分:24)

负载测试和基准测试工具

按字母顺序列出。

ab:慢速和单线程,用C语言编写

apib:ApacheBench(ab)的大多数功能,也被设计为更现代的替代品,用C语言编写

baloo:表达端到端的HTTP API测试变得简单,用Go(golang)编写

baton:HTTP加载测试,用Go(golang)编写

bombardier:用Go(golang)编写的快速跨平台HTTP基准测试工具

curl-loader:以C

编写的各种应用程序服务和流量生成的性能加载

drill:受Ansible语法启发的HTTP负载测试应用程序,用Rust编写

fasthttploader:自动调整的基准(有点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-like基准测试工具在多核cpu上运行,写入Go(golang)

hey:HTTP(S)负载生成器,ApacheBench(ab)替换,以前称为rakyll / boom,用Go(golang)编写

htstress:用C / Linux编写的多线程高负载bechmarking服务(> 5K rps)

httperf:难以配置,慢速和单线程,用C语言编写

inundator:简单且高吞吐量的HTTP泛洪程序,用C / Linux编写

jmeter:Apache JMeter™,用于在静态和动态资源上加载测试性能的纯应用程序,用Java编写

k6:现代负载测试工具,可在ES6 JS中编写脚本,支持HTTP / 1.1,HTTP / 2.0和WebSocket,用Go(golang)编写

locust:易于使用的分布式负载测试工具,具有实时Web UI。模拟一群并发用户,每个用户的行为都是由你的python代码定义的。用Python编写

mgun:用于加载测试HTTP服务器的现代工具,用Go(golang)编写

pounce:求助,但结果有所波动,有时比用htstress更快,用C写的

siege:慢速和单线程,用C语言编写

slapper:简单的负载测试工具,带有实时更新的请求时序直方图,用Go(golang)编写

slow_cooker:负载测试人员专注于生命周期问题和长时间运行的测试,服务具有可预测的负载和并发级别很长一段时间,用Go(golang)编写

sniper:强大的&用Go(golang)编写的高性能http负载测试器

tsung:模拟压力用户,以测试基于IP的客户端/服务器应用程序的可扩展性和性能HTTP,WebDAV,SOAP,PostgreSQL,MySQL,LDAP和Jabber / XMPP服务器,用Erlang编写

vegeta:HTTP加载测试工具和库,用Go(golang)编写

weighttp:多线程,但比没有keepalive的htstress慢,用C语言编写

wrk:多线程,用C / Lua编写

wrk2:持续吞吐量,正确延迟记录wrk的变体,用C / Lua编写

yandex-tank:加载和性能基准测试工具,用Python / C编写| C ++ | Asm(幻像)

说明来自here

答案 1 :(得分:13)

我使用过wrk和围攻,围攻是一个非常好用的工具,但我不确定你是否可以用围攻来测试DELETE或PUT。

Wrk可以使用提供的lua脚本生成请求,因此DELETE和PUT不会成为问题。 AND wrk是一个可以压倒NGINX静态文件服务器的工具,所以我认为它对于通用负载测试来说足够快。

我从未使用@Direvius建议的繁荣或Yandex.tank,主要是因为wrk非常简单并且符合我们的需求。但是JMeter对我来说太复杂了。

答案 2 :(得分:2)

我从未使用过任何这些,但我听到了一些关于wrk的积极看法。

我认为,您还应该尝试Jmeter,这是非常受欢迎的,也许Yandex.tank,这是我们LT部门用于大多数网络服务的工具。