测试网站性能测试之Apache AB命令常用命令整理
基本用法
- 发送 1000 个请求,并发 100 个:
ab -n 1000 -c 100 http://22fn.com/-n 1000: 发送 1000 个请求。-c 100: 并发 100 个请求。
请求类型和方法
-
使用 GET 请求(默认):
ab -n 100 -c 10 http://22fn.com/index.html- 这是
ab的默认请求方法。
- 这是
-
使用 POST 请求,并发送数据:
ab -n 100 -c 10 -p post_data.txt -T "application/x-www-form-urlencoded" http://22fn.com/submit.php-p post_data.txt: 从post_data.txt文件中读取 POST 数据。文件内容应为key1=value1&key2=value2格式。-T "application/x-www-form-urlencoded": 设置 Content-Type 头,指示发送的数据类型。对于JSON数据,可以使用-T "application/json"。
-
使用 HEAD 请求:
ab -n 100 -c 10 -i http://22fn.com/-i: 执行 HEAD 请求而不是 GET。这只会获取响应头,不会下载内容。
输出和报告
-
将统计信息保存到 CSV 文件:
ab -n 1000 -c 100 -g stats.csv http://22fn.com/-g stats.csv: 将所有测试结果以 GNUplot 格式写入stats.csv文件。可以用于绘制图表。
-
将失败请求的 URL 保存到文件:
ab -n 1000 -c 100 -e failed_urls.csv http://22fn.com/-e failed_urls.csv: 将所有无法处理的请求的 URL 写入failed_urls.csv文件。
-
只显示成功率:
ab -n 100 -c 10 -r http://22fn.com/-r: 不显示进度计数器。
-
显示更详细的输出:
ab -n 100 -c 10 -v 2 http://22fn.com/-v 2: 设置冗余级别为 2 (默认是 1)。级别越高,显示的信息越详细。
-
以 HTML 表格形式显示结果:
ab -n 100 -c 10 -w http://22fn.com/-w: 以 HTML 表格形式输出结果。
高级选项
-
保持连接 (Keep-Alive):
ab -n 1000 -c 100 -k http://22fn.com/-k: 启用 HTTP Keep-Alive 功能。这会尝试在同一 TCP 连接上发送多个请求,模拟更真实的浏览器行为。
-
设置请求超时:
ab -n 100 -c 10 -t 30 http://22fn.com/-t 30: 设置请求的超时时间为 30 秒。如果服务器在 30 秒内没有响应,请求将被视为失败。
-
添加 HTTP 头:
ab -n 100 -c 10 -H "User-Agent: MyCustomAgent" -H "Accept-Language: zh-CN" http://22fn.com/-H "Header-Name: Header-Value": 添加自定义的 HTTP 头。可以多次使用-H添加多个头。
-
使用基本认证:
ab -n 100 -c 10 -A username:password http://22fn.com/protected/-A username:password: 提供用于基本认证的用户名和密码。
-
使用代理服务器:
ab -n 100 -c 10 -X 192.168.1.1:8080 http://22fn.com/-X 192.168.1.1:8080: 通过指定的代理服务器192.168.1.1:8080发送请求。
-
指定源 IP 地址(如果有多网卡):
ab -n 100 -c 10 -B 192.168.1.10 http://22fn.com/-B 192.168.1.10: 绑定到指定的本地 IP 地址192.168.1.10。
-
设置请求的 Socket 选项:
ab -n 100 -c 10 -Z TCP_NODELAY http://22fn.com/-Z TCP_NODELAY: 设置 Socket 选项。例如,TCP_NODELAY可以禁用 Nagle 算法。
-
指定 SSL/TLS 协议版本:
ab -n 100 -c 10 -f TLS1.2 https://22fn.com/-f TLS1.2: 指定使用的 SSL/TLS 协议版本。例如:SSL2, SSL3, TLS1, TLS1.1, TLS1.2。
-
跳过证书验证 (不推荐用于生产环境):
ab -n 100 -c 10 -k -y https://22fn.com/-y: 不验证服务器证书(不推荐用于生产环境,仅用于测试)。
-
使用自定义 Cookie:
ab -n 100 -c 10 -C "sessionid=abcde; csrftoken=fghij" http://22fn.com/-C "name=value": 添加一个自定义的 Cookie。可以多次使用-C添加多个 Cookie。
其他
-
显示版本信息:
ab -V-V: 显示 ApacheBench 的版本信息并退出。
-
显示帮助信息:
ab -h-h: 显示帮助信息并退出。
重要提示:
- 在运行
ab命令时,请确保目标服务器能够承受您设置的负载,避免造成服务器过载甚至崩溃。 - 通常在测试环境中使用
ab进行性能测试,而不是在生产环境。 ab只能测试单个 URL,无法模拟用户浏览多个页面的行为。对于更复杂的场景,可能需要使用 JMeter、Locust 等更专业的工具。- 在使用 POST 请求时,
post_data.txt文件中的数据格式应与Content-Type头匹配。 - 对于 HTTPS 请求,确保服务器证书有效或使用
-y选项(不推荐)。
浙公网安备 33010602011771号