语法
ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path
选项
-A auth-username:password
向服务器提供基本认证信息。用户名和密码之间由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
一次产生的请求个数。默认是一次一个。
-C cookie-name=value
对请求附加一个"Cookie:"头行。其典型形式是 name=value 的一个参数对。此参数可以重复。
-d
不显示"percentage served within XX [ms] table"消息(为以前的版本提供支持)。
-e csv-file
产生一个逗号分隔(CSV)文件,其中包含了处理每个相应百分比请求(从1%到100%)所需要的相应百分比时间(以微秒为单位)。由于这种格式已经"二进制化",所以比"gnuplot"格式更有用。
-g gnuplot-file
把所有测试结果写入一个"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地导入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行为标题。
-h
显示使用方法的帮助信息。
-H custom-header
对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。
-i
执行HEAD请求,而不是GET 。
-k
启用KeepAlive功能,即在一个HTTP会话中执行多个请求。默认不启用KeepAlive功能。
-n requests
在测试会话中所执行的请求个数。默认仅执行一个请求,此时其结果不具有意义。
-p POST-file
包含了POST数据的文件。
-P proxy-auth-username:password
对一个中转代理提供基本认证信息。用户名和密码由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了407代理认证需求代码),此字符串都会被发送。
-q
如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此 -q 标记可以屏蔽这些信息。
-s
用于编译中(ab -h 会告诉你)使用了SSL的受保护的https ,而不是http协议的时候。此功能是实验性的,最好不要用。
-S
不显示中值和标准偏差值,而且在均值和中值为标准偏差值的1到2倍时,也不显示警告或出错信息。默认时,会显示最小值/均值/最大值等数值。(为以前的版本提供支持)
-t timelimit
测试所进行的最大秒数。内部隐含值是"-n 50000"。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-T content-type
POST数据时所使用的"Content-type"头信息。
-v verbosity
设置显示信息的详细程度,4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
-V
显示版本号并退出。
-w
以HTML表格形式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x <table>-attributes
设置<table>属性的字符串。此属性被填入<table 这里 > 。
-X proxy[:port]
对请求使用代理服务器。
-y <tr>-attributes
设置<tr>属性的字符串。
-z <td>-attributes
设置<td>属性的字符串。
用例
1.测试本机apache



































































如果你设置的-c过大,比如在windows下大于65可能出现的错误,以下是网上收集的解决办法:
使用ab的时候当并发数超过1024就会示出错:
windows下提示:apr_pollset_create failed: Invalid argument (22)
linux下提示:socket: Too many open files (24)
下面是从优快云转的一篇linux下的解决办法
=======================================
ab测试apache出错的解决办法 http://blog.youkuaiyun.com/answerzy/archive/2007/11/19/1892194.aspx
[root@answer bin]# ./ab -n 20000 -c 2000 http://192.168.2.60/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.2.60 (be patient)
socket: Too many open files (24)
解决办法: bash自带的ulimit, 各大版本均有提供
ulimit -n 2000(你需要的值)
=======================================
这应该不难理解,linux是通过文件来对设备进行管理,ulimit -n是设置同时打开文件的最大数值,ab中每一个连接打开一个设备文件,所以设置这个值就可以解决了。
下面是windows下的解决办法
TcpTimedWaitDelay
-
- 描述:确定 TCP/IP 在释放已关闭的连接并再次使用其资源前必须经过的时间。关闭与释放之间的这段时间称为 TIME_WAIT 状态或者两倍最大段生存期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。通过减少此条目的值,TCP/IP 可以更快地释放关闭的连接,并为新连接提供更多资源。如果运行中的应用程序要求快速释放连接或创建新连接,或者由于多个连接处于 TIME_WAIT 状态而导致吞吐量较低,请调整此参数。
- 如何查看或设置:
1. 使用 regedit 命令,访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建新的 REG_DWORD 值 TcpTimedWaitDelay。
2. 将此值设置为十进制 30,即十六进制 0x0000001e。此值将等待时间设置为 30 秒。
3. 停止并重新启动系统。
- 缺省值:0xF0,此值将等待时间设置为 240 秒(4 分钟)。
- 建议值:最小值为 0x1E,此值将等待时间设置为 30 秒。
- MaxUserPort
- 描述:确定当应用程序向系统请求获取可用的用户端口时,TCP/IP 可指定的最高端口号。
- 如何查看或设置:
1. 使用 regedit 命令,访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建新的 REG_DWORD 值 MaxUserPort。
2. 将此值至少设置为十进制 32768。
3. 停止并重新启动系统。
- 缺省值:无
- 建议值:至少为十进制 32768。
- 最大连接储备
- 描述:如果同时接收到许多连接尝试,请增大操作系统支持的缺省暂挂连接数。
- 如何查看或设置:
1. 使用 regedit 命令并访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注册表子键。
2. 根据需要创建并设置下列值:
3. "EnableDynamicBacklog"=dword:00000001
4.
5. "MinimumDynamicBacklog"=dword:00000020
6.
7. "MaximumDynamicBacklog"=dword:00001000
8.
"DynamicBacklogGrowthDelta"=dword:00000010
9. 这些值将最小可用连接数设置为 20,将最大可用连接数设置为 1000。每当可用连接数小于最小可用连接数时,可用连接数都会增加 10。
10. 停止并重新启动系统。
- KeepAliveInterval
- 描述:确定 TCP 在未接收到响应时重新尝试保持活动传输的频率。
- 如何查看或设置:
1. 使用 regedit 命令,访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注册表子键,然后创建新的 REG_DWORD 值 KeepAliveInterval。
2. 将此值设置为 1 秒。
3. 停止并重新启动系统。
- 缺省值:1 秒
- 建议值:无
另外作者在window xp测试时,即使设置了TcpTimedWaitDelay与MaxUserPort同样会出现apr_pollset_create failed: Invalid argument (22)错误。后下载其他版本后竟然可用,经过检查发现,本机安装的ab.exe的版本是Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0,而另外下载的版本是:Version 2.0.40-dev <$Revision: 1.1246 $> apache-2.0,下载地址:http://www.9enjoy.com/attachment.php?fid=18
参考资料
http://httpd.apache.org/docs/2.0/programs/ab.html