23

I have been looking around for tools that can help me to do load testing and benchmarking. I found a couple like:

I'm wondering if anyone has any experience with these tools and have any feedback pros vs cons of these tools. My load stress will include different test cases using DELETE, PUT, GET, POST, etc. headers.

4

3 回答 3

57

负载测试和基准测试工具

按字母顺序列出。

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

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

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

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

庞巴迪:快速的跨平台 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 : 用 C/Linux 编写的多线程高负载基准测试服务 (>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 : 强大且高性能的 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) 编写

说明来自这里

于 2018-04-13T08:09:59.307 回答
17

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

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

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

于 2014-05-21T04:41:02.567 回答
2

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

我认为,您还应该尝试一下非常流行的 Jmeter ,也许还有Yandex.tank 这是我们在 LT 部门用于我们大多数 Web 服务的工具。

于 2014-03-20T15:13:01.760 回答