1. Apache Bench (ab)
- 简介:
ab
是 Apache 超文本传输协议 (HTTP) 服务器的性能测试工具,它可以对 HTTP 服务器进行基准测试,模拟多个并发用户对目标服务器发起请求。
- 优点:简单易用,系统自带(在安装了 Apache 服务器的系统中通常可以直接使用),能够快速得出基本的性能指标。
- 缺点:功能相对单一,缺乏对复杂请求的支持,比如难以处理动态生成的请求参数。
- 示例:对
http://example.com
进行 1000 次请求,并发数为 100。
ab -n 1000 -c 100 http://example.com/
2. wrk
- 简介:
wrk
是一个开源的 HTTP 压测工具,它使用多线程和异步 I/O 来实现高并发,能够在短时间内产生大量的请求。
- 优点:性能强大,支持 Lua 脚本,可用于自定义请求,能灵活应对复杂的测试场景。
- 缺点:学习成本相对较高,需要一定的脚本编写能力。
- 示例:对
http://example.com
进行 30 秒的压测,并发数为 50。
wrk -t12 -c50 -d30s http://example.com
3. Vegeta
- 简介:
Vegeta
是一个用 Go 语言编写的快速、简单的 HTTP 压测工具,它可以对目标服务发起大量的 HTTP 请求,并生成详细的报告。
- 优点:输出信息丰富,支持多种输出格式,如 JSON、CSV 等,便于后续分析。
- 缺点:请求配置相对复杂,对于初学者不太友好。
- 示例:对
http://example.com
进行 10 秒的压测,每秒发起 100 个请求。
echo "GET http://example.com" | vegeta attack -duration=10s -rate=100 | vegeta report
4. Siege
- 简介:
Siege
是一个多功能的压测工具,不仅支持 HTTP、HTTPS,还支持 FTP 协议,能够模拟多个用户同时访问目标网站。
- 优点:支持多种协议,可对不同类型的服务进行压测,还能模拟真实用户的行为,如随机访问不同的页面。
- 缺点:性能相对较弱,在高并发场景下可能不如其他工具。
- 示例:对
http://example.com
进行 10 分钟的压测,并发数为 20。
siege -c 20 -t 10M http://example.com
5. Httperf
- 简介:
Httperf
是一个专门用于 HTTP 性能测试的工具,它可以精确控制请求的各种参数,如请求方法、请求头、请求体等。
- 优点:能够精确控制请求参数,适合对 HTTP 协议进行深入测试。
- 缺点:不支持 HTTPS 协议,功能相对有限。
- 示例:对
http://example.com
进行 1000 次请求,并发数为 10。
httperf --server example.com --port 80 --uri / --num-conns 1000 --num-calls 1 --rate 10