# 基准测试工具(ab)
## 安装ab
win:如果本地有apache的开发环境,那么ab默认在apache目录下的bin目录下,打开bin目录可以看到
linux:直接yum install httpd-tools,安装即可
简单上手
直接敲入下面代码(注意切换ab所在的目录)
-c 10代表并发数是10
-n 10总共进行100次访问
后面接要访问的网址,切记不可缺少http://
`D:\phpStudy\Apache\bin>ab -c 10 -n 1000 http://example.com/phpinfo.php`
#ab工具的描述,注意其中的版本号
~~~
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
#测试结果,共测试1000次,每100次显示访问进度,访问的网站是example.com
Benchmarking example.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
#服务器的信息
Server Software: nginx/1.6.2 #服务器web软件
Server Hostname: example.com #主机地址
Server Port: 80 #访问端口
#文档信息
Document Path: /phpinfo.php #访问的文档
Document Length: 94804 bytes #返回结果大小字节数(包含html,js,css,图片及响应中的所有内容字节数总和)
#链接信息
Concurrency Level: 10 #并发数,-c 10 设置了10个并发
Time taken for tests: 7.498 seconds #总耗时,单位秒
Complete requests: 1000 #总共请求中已完成的请求总数的和
Failed requests: 219 #失败的请求数总和
(Connect: 0, Receive: 0, Length: 219, Exceptions: 0)
Non-2xx responses: 9 #未收到2xx系列成功的请求总数
Total transferred: 94135779 bytes #整个请求总数中响应总数距的总大小字节数,包含头信息
HTML transferred: 93952076 bytes #整个请求总数中正文内容的总大小字节
Requests per second: 133.36 [#/sec] (mean) #每秒支持的并发数,这里是每秒支持133.36个并发
Time per request: 74.984 [ms] (mean) #完成一个请求的总耗时
Time per request: 7.498 [ms] (mean, across all concurrent requests) #完成所有并发请求中一个请求的总耗时
Transfer rate: 12259.83 [Kbytes/sec] received #每秒收到的字节总数(KB)
#测试的时间结果数据,留意Total一项,10个并发的情况下,完成一个请求,最小耗时(min)9毫秒,最大耗时(max)146毫秒
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 20
Processing: 9 74 22.2 68 146
Waiting: 6 73 22.1 67 143
Total: 9 74 22.2 68 146
#完成请求百分比,例如第一项,50% 68,代表一半的请求在68毫秒内完成,95% 129,代表1000的请求里,百分之九十八的请求在129毫秒里完成
Percentage of the requests served within a certain time (ms)
50% 68
66% 78
75% 86
80% 92
90% 109
95% 122
98% 129
99% 133
100% 146 (longest request)
~~~
## ab选项
输入下面命令得到ab帮助文档,该帮助文档,分别说明了用法和命令选项的含义
~~~
Usage: ab [options] [http://]hostname[:port]/path
Options are:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make at a time
-t timelimit Seconds to max. to spend on benchmarking
This implies -n 50000
-s timeout Seconds to max. wait for each response
Default is 30 seconds
-b windowsize Size of TCP send/receive buffer, in bytes
-B address Address to bind to when making outgoing connections
-p postfile File containing data to POST. Remember also to set -T
-u putfile File containing data to PUT. Remember also to set -T
-T content-type Content-type header to use for POST/PUT data, eg.
'application/x-www-form-urlencoded'
Default is 'text/plain'
-v verbosity How much troubleshooting info to print
-w Print out results in HTML tables
-i Use HEAD instead of GET
-x attributes String to insert as table attributes
-y attributes String to insert as tr attributes
-z attributes String to insert as td or th attributes
-C attribute Add cookie, eg. 'Apache=1234'. (repeatable)
-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
Inserted after all normal header lines. (repeatable)
-A attribute Add Basic WWW Authentication, the attributes
are a colon separated username and password.
-P attribute Add Basic Proxy Authentication, the attributes
are a colon separated username and password.
-X proxy:port Proxyserver and port number to use
-V Print version number and exit
-k Use HTTP KeepAlive feature
-d Do not show percentiles served table.
-S Do not show confidence estimators and warnings.
-q Do not show progress when doing more than 150 requests
-l Accept variable document length (use this for dynamic pages)
-g filename Output collected data to gnuplot format file.
-e filename Output CSV file with percentages served
-r Don't exit on socket receive errors.
-m method Method name
-h Display usage information (this message)
~~~
~~~
-n 即requests,用于指定压力测试总共的执行次数。
-c 即concurrency,用于指定压力测试的并发数。
-t 即timelimit,等待响应的最大时间(单位:秒)。
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v 即verbosity,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。
~~~