ab是apache自带的一种压力测试工具。ab可以直接在Web服务器本地发起测试请求,这至关重要,因为有些时候我们需要测试的仅仅是服务器的 处理性能,并不想掺杂着网络传输时间的影响。ab进行一切测试的本质都是基于HTTP的,所以可以说ab对于Web服务器软件的黑盒性能测试,获得的一切 数据和计算结果,都是可以通过HTTP来解释的。 ```Plain Text 一、ab命令参数详解 ``` - **-n requests Number of requests to perform** # 在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。 - **-c concurrency Number of multiple requests to make** # 在测试会话中所执行的请求并发数 - **-t timelimit Seconds to max. wait for responses** # 测试所进行的最大秒数。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。 - **-b windowsize Size of TCP send/receive buffer, in bytes** # TCP发送/接收的缓冲大小(单位:字节) - **-p postfile File containing data to POST. Remember also to set -T** # 发送POST请求时需要上传的文件,此外还必须设置-T参数 - **-u putfile File containing data to PUT. Remember also to set -T** # 发送PUT请求时需要上传的文件,此外还必须设置-T参数 - **-T content-type Content-type header for POSTing, eg. ‘application/x-www-form-urlencoded’ Default is ‘text/plain’** # 用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。 - **-v verbosity How much troubleshooting info to print** # 指定打印帮助信息的冗余级别 - **-w Print out results in HTML tables** # 以HTML表格形式打印结果 - **-i Use HEAD instead of GET** # 使用HEAD请求代替GET请求 - **-x attributes String to insert as table attributes** # 插入字符串作为table标签的属性 - **-y attributes String to insert as tr attributes** # 插入字符串作为tr标签的属性 - **-z attributes String to insert as td or th attributes** # 插入字符串作为td标签的属性 - **-C attribute Add cookie, eg. ‘Apache=1234. (repeatable)** # 添加cookie信息,例如:”Apache=1234″(可以重复该参数选项以添加多个) - **-H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’ Inserted after all normal header lines. (repeatable)** # 添加任意的请求头,例如:”Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。 - **-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** # 指定使用的代理服务器和端口号,例如:”126.10.10.3:88″。 - **-V Print version number and exit** # 打印版本号并退出。 - **-k Use HTTP KeepAlive feature** # 使用HTTP的KeepAlive特性 - **-d Do not show percentiles served table.** # 不显示百分比。 - **-S Do not show confidence estimators and warnings.** # 不显示预估和警告信息。 - **-g filename Output collected data to gnuplot format file.** # 输出结果信息到gnuplot格式的文件中。 - **-e filename Output CSV file with percentages served** # 输出结果信息到CSV格式的文件中。 - **-r Don’t exit on socket receive errors.** # 指定接收到错误信息时不退出程序。 - **-h Display usage information (this message)** # 显示用法信息,其实就是ab -help - **-Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) -f protocol Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL)** # 使用ssl/tls的协议版本 ```Plain Text 二、测试性能输出详解 ``` - Server Software: Apache/2.2.15 Server Hostname: 192.168.80.135 Server Port: 80 Document Path: /phpinfo.php Document Length: 50366 bytes - Concurrency Level: 100 # 表示并发的用户数 - **Time taken for tests: 0.739 seconds # 表示所有这些请求被处理完成所花费的总时间** - Complete requests: 1000 # 表示总请求数量,这是我们设置的参数之一 - Failed requests: 0 # 表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况。如果接收到的HTTP响应数据的头信息中含有 2XX以外的状态码,则会在测试结果中显示另一个名为 “Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算在失败的请求中。 - Write errors: 0 Keep-Alive requests: 0 - **Total transferred: 50538000 bytes # 表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。** - **HTML transferred: 50366000 bytes # 表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度** - **Requests per second: 1353.17 [#/sec] (mean) # 吞吐率,计算公式:Complete requests / Time taken for tests** - **Time per request: 73.901 [ms] (mean) # 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level) 【注】这里是请求等待时间,不是使用计算公式:Time taken for tests / Concurrency Level** - **Time per request: 0.739 [ms] (mean, across all concurrent requests) # 服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level** - **Transfer rate: 66783.56 [Kbytes/sec] received # 表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Timetaken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。** ```Plain Text Connection Times (ms) min avg max Connect: 0 5 13 Processing: 12 66 98 Total: ```