测试网站性能测试之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 选项(不推荐)。
posted @ 2025-06-15 10:56  小祺先生  阅读(60)  评论(0)    收藏  举报