Apache压力工具ab介绍

转自:http://www.rickyzhu.com/129_quick-introduce-to-ab.html

Apache压力测试工具apache bench 简称ab.主要是从系统设计和开发的角度去评价系统在一定压力下的表现,就正如下面的介绍一样,看每秒系统能支持的并发请求.从而进行相关的调优操作. 下面是ab的官方介绍.

ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.

支持的参数和参数的介绍如下:

ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -ggnuplot-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

-attributes ] [ -X proxy[:port] ] [ -y  -attributes  ] [ -z 

-attributes ] [http://]hostname[:port]/path

 

-A auth-username:password
Supply BASIC Authentication credentials to the server. The username and password are separated by a single   :  and sent on the wire base64 encoded. The string is sent regardless of whether the server needs it ( i.e., has sent an 401 authentication needed).
-c concurrency
Number of multiple requests to perform at a time. Default is one request at a time.
-C cookie-name=value
Add a   Cookie:  line to the request. The argument is typically in the form of a   name=value  pair. This field is repeatable.
-d
Do not display the “percentage served within XX [ms] table”. (legacy support).
-e csv-file
Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milliseconds) it took to serve that percentage of the requests. This is usually more useful than the ‘gnuplot’ file; as the results are already ‘binned’.
-g gnuplot-file
Write all measured values out as a ‘gnuplot’ or TSV (Tab separate values) file. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excel. The labels are on the first line of the file.
-h
Display usage information.
-H custom-header
Append extra headers to the request. The argument is typically in the form of a valid header line, containing a colon-separated field-value pair ( i.e.,   "Accept-Encoding: zip/zop;8bit").
-i
Do   HEAD  requests instead of   GET.
-k
Enable the HTTP KeepAlive feature,   i.e., perform multiple requests within one HTTP session. Default is no KeepAlive.
-n requests
Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.
-p POST-file
File containing data to POST.
-P proxy-auth-username:password
Supply BASIC Authentication credentials to a proxy en-route. The username and password are separated by a single   :  and sent on the wire base64 encoded. The string is sent regardless of whether the proxy needs it ( i.e., has sent an 407 proxy authentication needed).
-q
When processing more than 150 requests,   ab  outputs a progress count on   stderr  every 10% or 100 requests or so. The   -q  flag will suppress these messages.
-s
When compiled in ( ab -h  will show you) use the SSL protected   https  rather than the   http  protocol. This feature is experimental and   very  rudimentary. You probably do not want to use it.
-S
Do not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart. And default to the min/avg/max values. (legacy support).
-t timelimit
Maximum number of seconds to spend for benchmarking. This implies a   -n 50000  internally. Use this to benchmark the server within a fixed total amount of time. Per default there is no timelimit.
-T content-type
Content-type header to use for POST data.
-v verbosity
Set verbosity level –   4  and above prints information on headers,   3  and above prints response codes (404, 200, etc.),   2  and above prints warnings and info.
-V
Display version number and exit.
-w
Print out results in HTML tables. Default table is two columns wide, with a white background.
-x  -attributes
String to use as attributes for   . Attributes are inserted  
 here  >.
-X proxy[:port]
Use a proxy server for the requests.
-y  -attributes
String to use as attributes for   .
-z 
-attributes
String to use as attributes for  
.

下面是一个具体的例子:

在命令行下输出:

./ab -n number_of_total_requests -c number_of_simultaneous_requests http://your_web_server/your_php_app.php

 

例如:./ab -n 1000 -c 50 http://www.domain.com/myapp.php

AB将同时向http://www.domain.com/myapp.php发出50个并发请求,共发出1000次。

 

 

测试结果将可能是这样的:

Server Software: Apache/2.0.16
Server Hostname: localhost
Server Port: 80
Document Path: /myapp.php
Document Length: 1311 bytes
Concurrency Level: 50
Time taken for tests: 8.794 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 1754000 bytes
HTML transferred: 1311000 bytes
Requests per second: 113.71
Transfer rate: 199.45 kb/s received
Connection Times (ms)
min avg max
Connect: 0 0 5
Processing: 111 427 550
Total: 111 427 555

myapp.php每秒钟可以处理的请求数为113.71个。将请求数增加,看看服务器能否处理更大的压力。你也需要调节Apache的 MaxClients,ThreadsPerChild,MaxThreadsPerChild等参数,基于你的httpd.conf中的MPM模块选择。

如果你想得到更详细的信息,请到www.apache.org上查阅一些更深入的文档,包括模块和第三方的提高效率的工具。修改httpd.conf后,要重启Apache服务器,然后再用AB测试。你会看到每秒请求数增加或减少。记下每次的参数,最后选择最佳效率的那种配置。

你可能感兴趣的:(apache,ab,压力测试)