ApacheBench(ab压力测试工具)使用完整教程!CC攻击!Kali Linux入门教程 ,Termux可用
ApacheBench 是一款简单、快速且强大的 HTTP 压力测试工具,适用于对 Web 服务器进行基础的性能测试和分析。
简介
Apache Bench(简称 ab)是 Apache HTTP Server 附带的轻量级命令行工具,用于执行网站或服务器的负载测试。通过模拟多个并发请求,可以快速分析服务器的性能表现,例如响应时间、吞吐量以及并发处理能力。
ApacheBench( ab )工具程式是标准 Apache 网站服务器发布的一部分,跟 Apache 网站服务器一样,也是免费软件,并可以用 Apache许可证 的规范下散布此软件。
侦测 ApacheBench
ApacheBench 所使用的 User Agent 字串如下:
ApacheBench/MAJV.MINV
其中 MAJV and MINV 分别代表此程式的主要版本编号与次要版本编号,它通常没有被网站纪录分析软件正确的分类,例如说:Webalizer或AWStats,所以若你执行 ApacheBench 可能会影响到你原本分析流量纪录的报表。
主要功能
并发性能测试: 模拟高并发环境,检测服务器处理能力。
HTTP 请求测试: 支持 GET、HEAD、POST 等 HTTP 方法。
分析输出数据: 包括每秒请求数(QPS)、平均响应时间、传输速率等。
支持 HTTPS 测试: 能对 SSL/TLS 加密的目标发起请求。
适用场景
网站压力测试
RESTful API 性能测试
Web 服务器优化后的性能验证
Apache Bench 的安装
Apache Bench 通常包含在 Apache 工具包中,可以通过安装 Apache 来获取 ab。
sudo apt update
sudo apt install apache2-utils
验证安装
ab -V
输出类似以下内容则表示安装成功
使用
我们先准备一个靶机。我这里就选择使用ubuntu。我们开启Apache服务来进行测试。
-h 显示使用信息(本消息)
ab -h
1. 指定请求次数和并发数
参数:-n (总请求数) 和 -c (并发请求数)
ab -n 1000 -c 50 http://example.com/
解释: 对 http://example.com/ 发起 1000 个请求,同时保持 50 个请求并发。
服务器信息
服务器软件: Apache/2.4.52
目标地址: 192.168.174.145,端口 80(HTTP 默认端口)
文档信息
路径: /
文档大小: 10671 字节(每次请求返回的内容大小)
整体性能
测试耗时: 0.429 秒完成所有 1000 个请求。
平均响应速率: 2331.33 请求/秒,表示服务器每秒处理 2331 个请求。
单个请求的平均响应时间: 21.447 毫秒(从客户端发起到接收响应)。
并发情况下的平均响应时间: 0.429 毫秒(所有请求的平均)。
数据传输
总数据传输量: 10945000 字节(10.9 MB)。
HTML 数据量: 10671000 字节(10.6 MB)。
传输速率: 24918.41 Kbytes/sec(24.9 MB/s)。
连接时间
最小/平均/最大:
连接时间(Connect):0ms 平均,1ms 最大(表示服务器响应迅速)。
处理时间(Processing):2ms 最小,21ms 平均,32ms 最大。
总时间(Total):2ms 最小,21ms 平均,32ms 最大。
等待时间(Waiting): 等待服务器处理的平均时间是 20ms。
失败请求:
失败请求数: 0,表明服务器稳定且未丢失任何请求。
百分位响应时间
50%(中位数): 50% 的请求在 21 毫秒内完成。
90%: 90% 的请求在 24 毫秒内完成。
100%: 最慢的请求耗时 32 毫秒。
2. 指定请求的最大时间限制
参数:-t
ab -n 1000 -c 50 -t 30 http://example.com/
解释: 对 http://example.com/ 发起请求,但最多持续 30 秒。
可以看到ubuntu正在不断接受大量的发包数据
3. 设置每个响应的超时时间
参数:-s
ab -n 100 -c 10 -s 10 http://example.com/
解释: 每次请求的最大响应时间为 10 秒。
4. 设置 TCP 缓冲区大小
参数:-b
ab -n 100 -c 10 -b 8192 http://example.com/
解释: 使用 8192 字节作为 TCP 缓冲区大小。
5. 绑定到特定的本地 IP 地址
参数:-B
ab -n 100 -c 10 -B 192.168.174.128 http://example.com/
解释: 绑定到本地 IP 地址 192.168.174.128 发起请求。
6. 模拟 POST 请求
参数:-p 和 -T
ab -n 100 -c 10 -p postdata.txt -T "application/x-www-form-urlencoded" http://example.com/api
解释: 向 http://example.com/api 发起 100 个 POST 请求,postdata.txt 文件包含 POST 数据。
7. 模拟 PUT 请求
参数:-u 和 -T
ab -n 50 -c 5 -u putdata.txt -T "application/json" http://example.com/resource
解释: 向 http://example.com/resource 发起 50 个 PUT 请求,putdata.txt 文件包含 PUT 数据。
8. 指定自定义请求头
参数:-H
ab -n 100 -c 10 -H "Authorization: Bearer token123" http://example.com/
解释: 向目标 URL 添加自定义头部 Authorization。
9. 模拟带 Cookie 的请求
参数:-C
ab -n 100 -c 10 -C "sessionid=abcd1234" http://example.com/
解释: 通过 Cookie 携带 sessionid=abcd1234 的请求。
10. 使用 HTTP KeepAlive
参数:-k
ab -n 100 -c 10 -k http://example.com/
解释: 启用 HTTP 的 KeepAlive 功能,复用连接。
11. 只使用 HEAD 请求而非 GET
参数:-i
ab -n 50 -c 5 -i http://example.com/
解释: 使用 HEAD 方法请求 http://example.com/。
12. 输出 HTML 格式的结果
参数:-w
ab -n 100 -c 10 -w http://example.com/
解释: 输出以 HTML 表格格式呈现的结果。
13. 导出结果为 Gnuplot 数据
参数:-g
ab -n 100 -c 10 -g output.gnuplot http://example.com/
解释: 将请求数据导出到 output.gnuplot 文件,以便使用 Gnuplot 绘图。
14. 导出结果为 CSV 文件
参数:-e
ab -n 100 -c 10 -e results.csv http://example.com/
解释: 将百分位统计数据导出到 CSV 文件 results.csv。
15. 忽略响应长度的变化
参数:-l
ab -n 100 -c 10 -l http://example.com/
解释: 接受目标响应的内容长度可以变化,适用于动态页面。
16. 禁用显示百分位表
参数:-d
ab -n 100 -c 10 -d http://example.com/
解释: 不显示响应时间的百分位统计表。
17. 不显示置信区间和警告
参数:-S
ab -n 100 -c 10 -S http://example.com/
解释: 不显示置信区间和任何警告信息。
18. 指定 HTTP 方法
参数:-m
ab -n 50 -c 5 -m DELETE http://example.com/resource
解释: 使用 DELETE 方法请求 http://example.com/resource。
19. 使用代理服务器
参数:-X
ab -n 100 -c 10 -X 127.0.0.1:8080 http://example.com/
解释: 通过代理 127.0.0.1:8080 发起请求。
20. 指定 SSL/TLS 协议
参数:-f
ab -n 100 -c 10 -f TLS1.2 https://example.com/
解释: 强制使用 TLS 1.2 协议请求目标。
21. 指定 SSL/TLS 密码套件
参数:-Z
ab -n 100 -c 10 -Z AES128-GCM-SHA256 https://example.com/
解释: 使用 AES128-GCM-SHA256 密码套件进行 HTTPS 请求。
22. 使用客户端证书
参数:-E
ab -n 100 -c 10 -E client.pem https://example.com/
解释: 使用 client.pem 客户端证书链和私钥请求目标。
23. 禁用 SNI(Server Name Indication)
参数:-I
ab -n 100 -c 10 -I https://example.com/
解释: 禁用 SNI 功能,这对不支持 SNI 的老服务器有用。
24. 以安静模式运行
参数:-q
ab -n 1000 -c 100 -q http://example.com/
解释: 在大量请求时隐藏进度条信息。
总结
如果在非 root 用户环境运行,请确保网络端口和目标 URL 可被访问。不要对非授权的目标服务器执行压力测试,这可能被视为恶意行为。默认情况下,ab 的并发数(-c 参数)受硬件性能和服务器设置影响,建议逐步提高以避免影响生产环境。
ApacheBench 是一款简单、快速且强大的 HTTP 压力测试工具,适用于对 Web 服务器进行基础的性能测试和分析。在实际使用中,ab 可帮助开发者快速定位性能瓶颈,优化服务器配置。然而,对于更复杂的测试场景,可以结合其他工具(如 JMeter、Locust)进行补充。
通过 ab 的测试结果,用户能够直观了解服务器的处理能力和稳定性,从而为业务发展提供可靠的技术支撑。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。
更多推荐
所有评论(0)