NAME
ab - Apache HTTP server benchmarking tool
SYNOPSIS
ab [ -k ] [ -n requests ] [ -t timelimit ] [ -c concurrency
] [ -p POST file ] [ -A Authenticate username:password ] [
-P Proxy Authenticate username:password ] [ -H Custom header
] [ -C Cookie name=value ] [ -T content-type ] [ -v verbos-
ity ] ] [ -w output HTML ] ] [ -x <table> attributes ] ] [
-y <tr> attributes ] ] [ -z <td> attributes ]
[http://]hostname[:port]/path
ab [ -V ] [ -h ]
DESCRIPTION
ab is a tool for benchmarking your Apache HyperText Transfer
Protocol (HTTP) server. It is designed to give you an
impression on how performant is your current Apache instal-
lation. This especially shows you how much requests per
time your Apache installation is capable to serve.
OPTIONS
-k Enable the HTTP KeepAlive feature, i.e. perform
multiple requests within one HTTP session
instead. Default is no KeepAlive.
-n requests Number of requests to perform for the benchmark-
ing session. The default is to just perform one
single request which usually leads to not very
representative benchmarking results.
-t timelimit
Seconds to max. 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.
-c concurrency
Number of multiple requests per time to perform.
Default is one request per time.
-p POST file
File containing data to POST.
-A Authorization username:password
Supply BASIC Authentification credentials to the
server. The username and password are separated
by a single ':' and send on the wire uuencoded.
The string is send regardless of wether the
server needs it; (i.e. has send an 401.
Authentifcation needed).
-p Proxy-Authorization username:password
Supply BASIC Authentification credentials to a
proxy en-route. The username and password are
separated by a single ':' and send on the wire
uuencoded. The string is send regardless of
wether the proxy needs it; (i.e. has send an 407
Proxy authentifcation needed).
-C Cookie name=value
Add a 'Cookie:' line to the request. The argu-
ment is typically in the form of a 'name=value'
pair. This field is repeatable.
-p Header string
Postfix extra headers to the request. The argu-
ment is typically in the form of a valid header
line; containing a colon separated field value
pair. (i.e.
-T content-type
Content-type header to use for POST data.
-v Set verbosity level - 4 and above prints infor-
mation on headers, 3 and above prints response
codes (404, 200, etc.), 2 and above prints warn-
ings and info.
-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 <table>. Attri-
butes are inserted <table here >
-y attributes
String to use as attributes for <tr>.
-z attributes
String to use as attributes for <td>.
-V Display version number and exit.
-h Display usage information.
BUGS
There are various statically declared buffers of fixed
length. Combined with the lazy parsing of the command line
arguments, the response headers from the server and other
external inputs this might bite you.
It does not implement HTTP/1.x fully; only accepts some
'expected' forms of responses. The rather heavy use of
strstr(3) shows up top in profile, which might indicate a
performance problem; i.e. you would measure the ab perfor-
mance rather than the server's.
SEE ALSO
httpd(8)