2023-02-25 433
ache Benchmark简称为ab,是apache自带的用于HTTP Server测试的工具。它可以接受单一的URL,然后重复地按照指定的多个独立线程的方式加载,并使用不同的命令行参数控制访问的次数、最大的并发访问数等。另外一项不错的功能是可以输出比较详细的报告。
语法
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
1 E:\cluster>ab -k -n 1000 -c 100 http://localhost/
2 This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
4 Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
5
6 Benchmarking localhost (be patient)
7 Completed 100 requests
8 Completed 200 requests
9 Completed 300 requests
10 Completed 400 requests
11 Completed 500 requests
12 Completed 600 requests
13 Completed 700 requests
14 Completed 800 requests
15 Completed 900 requests
16 Finished 1000 requests
17
18
19 Server Software: Apache/2.0.52
20 Server Hostname: localhost
21 Server Port: 80
22
23 Document Path: /
24 Document Length: 1494 bytes
25
26 Concurrency Level: 100
27 /*整个测试持续的时间*/
28 Time taken for tests: 3.296875 seconds
29 /*完成的请求数量*/
30 Complete requests: 1000
31 /*失败的请求数量*/
32 Failed requests: 0
33 Write errors: 0
34 /*保持联机连接的请求数量。只有在命令行中使用-k,才能看到该属性值。*/
35 Keep-Alive requests: 1000
36 /*整个场景中的网络传输量*/
37 Total transferred: 1987070 bytes
38 /*整个场景中的HTML内容传输量*/
39 HTML transferred: 1494000 bytes
40 /*每秒钟平均处理的请求数*/
41 Requests per second: 303.32 [#/sec] (mean)
42 /*每个线程下的一组请求平均消耗时间*/
43 Time per request: 329.688 [ms] (mean)
44 /*并发的每个请求平均消耗时间*/
45 Time per request: 3.297 [ms] (mean, across all concurrent requests)
46 /*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题*/
47 Transfer rate: 588.44 [Kbytes/sec] received
48
49 Connection Times (ms)
50 min mean[+/-sd] median max
51 Connect: 0 0 0.8 0 15
52 Processing: 0 212 69.4 218 406
53 Waiting: 0 211 69.5 218 406
54 Total: 0 212 69.3 218 406
55 /*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中 50% 的用户响应时间小于 218 毫秒,66 % 的用户响应时间小于 234 毫秒,最大的响应时间小于 406 毫秒*/
56
57 Percentage of the requests served within a certain time (ms)
58 50% 218
59 66% 234
60 75% 250
61 80% 265
62 90% 296
63 95% 312
64 98% 343
65 99% 359
66 100% 406 (longest request)
如果你设置的-c过大,比如在windows下大于65可能出现的错误,以下是网上收集的解决办法:
使用ab的时候当并发数超过1024就会示出错:
windows下提示:apr_pollset_create failed: Invalid argument (22)
linux下提示:socket: Too many open files (24)
下面是从CSDN转的一篇linux下的解决办法
=======================================
ab测试apache出错的解决办法 http://blog.csdn.net/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
1. 使用 regedit 命令,访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建新的REG_DWORD 值 TcpTimedWaitDelay。
2. 将此值设置为十进制 30,即十六进制 0x0000001e。此值将等待时间设置为 30 秒。
3. 停止并重新启动系统。
1. 使用 regedit 命令,访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建新的REG_DWORD 值 MaxUserPort。
2. 将此值至少设置为十进制 32768。
3. 停止并重新启动系统。
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. 停止并重新启动系统。
1. 使用 regedit 命令,访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注册表子键,然后创建新的REG_DWORD 值 KeepAliveInterval。
2. 将此值设置为 1 秒。
3. 停止并重新启动系统。
另外作者在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
原文链接:https://77isp.com/post/34465.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态