siege vs wrk的负载测试和基准测试[关闭]

Posted

技术标签:

【中文标题】siege vs wrk的负载测试和基准测试[关闭]【英文标题】:Load Testing and Benchmarking With siege vs wrk [closed] 【发布时间】:2014-04-24 20:01:16 【问题描述】:

我一直在寻找可以帮助我进行负载测试和基准测试的工具。我发现了一对:

https://github.com/wg/wrk http://www.joedog.org/siege-home/ https://github.com/rakyll/boom

我想知道是否有人对这些工具有任何经验,并对这些工具的优缺点有任何反馈。我的负载压力将包括使用 DELETE、PUT、GET、POST 等标头的不同测试用例。

【问题讨论】:

【参考方案1】:

负载测试和基准测试工具

按字母顺序列出。

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

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

baloo:用 Go (golang) 编写的富有表现力的端到端 HTTP API 测试变得简单

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

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

curl-loader:各种应用服务的性能加载和流量生成,C语言编写

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

fasthttploader: 基于 fasthttp 库的自动调整和图表的基准测试 (kinda ab),用 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: 在多核 cpu 上运行的类似 ab 的基准测试工具,用 Go (golang) 编写

hey:HTTP(S)负载生成器,ApacheBench(ab)替代,原名rakyll/boom,用Go(golang)编写

htstress:多线程高负载基准测试服务 (>5K rps),用 C/Linux 编写

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: 强大的高性能 http 负载测试器,用 Go (golang) 编写

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 (phantom) 编写

描述来自here。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

我从来没有使用过这些,但我听说过一些关于 wrk 的正面意见。

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

【讨论】:

以上是关于siege vs wrk的负载测试和基准测试[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

压测工具siege和wrk

Web性能测试--Siege

基准测试工具:Wrk初识

Linux压力测试工具—Siege命令

Web 性能压力测试工具之 Siege 详解

Web性能压力测试工具——Siege详解