version 2, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
ab |
|
|
2 |
!!!ab |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
OPTIONS |
|
|
7 |
BUGS |
|
|
8 |
SEE ALSO |
|
|
9 |
---- |
|
|
10 |
!!NAME |
|
|
11 |
|
|
|
12 |
|
|
|
13 |
ab - Apache HTTP server benchmarking tool |
|
|
14 |
!!SYNOPSIS |
|
|
15 |
|
|
|
16 |
|
|
|
17 |
__ab__ [[ __-k__ ] [[ __-e__ ] [[ __-q__ ] [[ |
|
|
18 |
__-S__ ] [[ __-i__ ] [[ __-s__ ] [[ __-n__ |
|
|
19 |
''requests'' ] [[ __-t__ ''timelimit'' ] [[ __-c__ |
|
|
20 |
''concurrency'' ] [[ __-p__ ''POST file'' ] [[ |
|
|
21 |
__-A__ ''Authenticate username:password'' ] [[ |
|
|
22 |
__-X__ ''proxy [[ :port ]'' ] [[ __-P__ ''Proxy |
|
|
23 |
Authenticate username:password'' ] [[ __-H__ ''Custom |
|
|
24 |
header'' ] [[ __-C__ ''Cookie name=value'' ] [[ |
|
|
25 |
__-T__ ''content-type'' ] [[ __-v__ ''verbosity'' |
|
|
26 |
] ] [[ __-w__ ''output HTML'' ] ] [[ __-g__ ''output |
|
|
27 |
GNUPLOT'' ] ] [[ __-e__ ''output CSV'' ] ] [[ |
|
|
28 |
__-x__ '''' ] ] [[ __-y__ |
|
|
29 |
'''' ] ] [[ __-z__ '' |
|
|
30 |
'' ] |
|
|
31 |
''[[http[[s]://]hostname[[:port]/path'' |
|
|
32 |
|
|
|
33 |
|
|
|
34 |
__ab__ [[ __-V__ ] [[ __-h__ ] |
|
|
35 |
!!DESCRIPTION |
|
|
36 |
|
|
|
37 |
|
|
|
38 |
__ab__ is a tool for benchmarking the performance of your |
2 |
perry |
39 |
Apache !HyperText Transfer Protocol (HTTP) server. It does |
1 |
perry |
40 |
this by giving you an indication of how many requests per |
|
|
41 |
second your Apache installation can serve. |
|
|
42 |
!!OPTIONS |
|
|
43 |
|
|
|
44 |
|
2 |
perry |
45 |
__-k__ Enable the HTTP !KeepAlive feature; that is, |
1 |
perry |
46 |
perform multiple requests within one HTTP session. Default |
2 |
perry |
47 |
is no !KeepAlive. |
1 |
perry |
48 |
|
|
|
49 |
|
|
|
50 |
__-d__ Do not display the |
|
|
51 |
__ |
|
|
52 |
|
|
|
53 |
|
|
|
54 |
__-S__ Do not display the median and standard deviation |
|
|
55 |
values, nor display the warning/error messages when the |
|
|
56 |
average and median are more than one or two times the |
|
|
57 |
standard deviation apart. And default to the min/avg/max |
|
|
58 |
values. (legacy support). |
|
|
59 |
|
|
|
60 |
|
|
|
61 |
__-s__ When compiled in (bb -h will show you) use the SSL |
|
|
62 |
protected __https__ rather than the __http__ protocol. |
|
|
63 |
This feature is experimental and __very__ rudimentary. |
|
|
64 |
You propably do not want to use it. |
|
|
65 |
|
|
|
66 |
|
2 |
perry |
67 |
__-k__ Enable the HTTP !KeepAlive feature; that is, |
1 |
perry |
68 |
perform multiple requests within one HTTP session. Default |
2 |
perry |
69 |
is no !KeepAlive. __-i__ Use an HTTP 'HEAD' instead of the |
1 |
perry |
70 |
GET method. Cannot be mixed with POST. |
|
|
71 |
|
|
|
72 |
|
|
|
73 |
__-n__ ''requests'' |
|
|
74 |
|
|
|
75 |
|
|
|
76 |
The number of requests to perform for the benchmarking |
|
|
77 |
session. The default is to perform just one single request, |
|
|
78 |
which will not give representative benchmarking |
|
|
79 |
results. |
|
|
80 |
|
|
|
81 |
|
|
|
82 |
__-t__ ''timelimit'' |
|
|
83 |
|
|
|
84 |
|
|
|
85 |
The number of seconds to spend benchmarking. Using this |
|
|
86 |
option automatically set the number of requests for the |
|
|
87 |
benchmarking session to 50000. Use this to benchmark the |
|
|
88 |
server for a fixed period of time. By default, there is no |
|
|
89 |
timelimit. |
|
|
90 |
|
|
|
91 |
|
|
|
92 |
__-c__ ''concurrency'' |
|
|
93 |
|
|
|
94 |
|
|
|
95 |
The number of simultaneous requests to perform. The default |
|
|
96 |
is to perform one HTTP request at at time, that is, no |
|
|
97 |
concurrency. |
|
|
98 |
|
|
|
99 |
|
|
|
100 |
__-p__ ''POST file'' |
|
|
101 |
|
|
|
102 |
|
|
|
103 |
A file containing data that the program will send to the |
|
|
104 |
Apache server in any HTTP POST requests. |
|
|
105 |
|
|
|
106 |
|
|
|
107 |
__-A__ ''Authorization |
|
|
108 |
username:password'' |
|
|
109 |
|
|
|
110 |
|
|
|
111 |
Supply Basic Authentication credentials to the server. The |
|
|
112 |
username and password are separated by a single ':', and |
|
|
113 |
sent as uuencoded data. The string is sent regardless of |
|
|
114 |
whether the server needs it; that is, has sent a 401 |
|
|
115 |
Authentication needed. |
|
|
116 |
|
|
|
117 |
|
|
|
118 |
__-X__ ''proxy[[:port]'' |
|
|
119 |
|
|
|
120 |
|
|
|
121 |
Route all requests through the proxy (at optional |
|
|
122 |
port). |
|
|
123 |
|
|
|
124 |
|
|
|
125 |
__-P__ ''Proxy-Authorization |
|
|
126 |
username:password'' |
|
|
127 |
|
|
|
128 |
|
|
|
129 |
Supply Basic Authentication credentials to a proxy en-route. |
|
|
130 |
The username and password are separated by a single ':', and |
|
|
131 |
sent as uuencoded data. The string is sent regardless of |
|
|
132 |
whether the proxy needs it; that is, has sent a 407 Proxy |
|
|
133 |
authentication needed. |
|
|
134 |
|
|
|
135 |
|
|
|
136 |
__-C__ ''Cookie name=value'' |
|
|
137 |
|
|
|
138 |
|
|
|
139 |
Add a 'Cookie:' line to the request. The argument is |
|
|
140 |
typically a 'name=value' pair. This option may be |
|
|
141 |
repeated. |
|
|
142 |
|
|
|
143 |
|
|
|
144 |
__-p__ ''Header string'' |
|
|
145 |
|
|
|
146 |
|
|
|
147 |
Append extra headers to the request. The argument is |
|
|
148 |
typically in the form of a valid header line, usually a |
|
|
149 |
colon separated field value pair, for example, |
|
|
150 |
'Accept-Encoding: zip/zop;8bit'. |
|
|
151 |
|
|
|
152 |
|
|
|
153 |
__-T__ ''content-type'' |
|
|
154 |
|
|
|
155 |
|
|
|
156 |
The content-type header to use for POST data. |
|
|
157 |
|
|
|
158 |
|
|
|
159 |
__-g__ ''gnuplot file'' |
|
|
160 |
|
|
|
161 |
|
|
|
162 |
Write all measured values out as a 'gnuplot' or TSV (Tab |
|
|
163 |
separate values) file. This file can easily be imported into |
|
|
164 |
packages like Gnuplot, IDL, Mathematica, Igor or even |
|
|
165 |
Excell. The labels are on the first line of the |
|
|
166 |
file. |
|
|
167 |
|
|
|
168 |
|
|
|
169 |
__-q__ When processing more than 150 requsts; __ab__ |
|
|
170 |
outputs a progress count on __stderr__ every 10% or 100 |
|
|
171 |
requests or so. The __-q__ flag qill suppress these |
|
|
172 |
messages. |
|
|
173 |
|
|
|
174 |
|
|
|
175 |
__-e__ ''CSV file'' |
|
|
176 |
|
|
|
177 |
|
|
|
178 |
Write a Comma separated value (CSV) file which contains for |
|
|
179 |
each percentage (from 1% to 100%) the time (in milli |
|
|
180 |
seconds) it took to serve that percentage of the requests. |
|
|
181 |
This is usually more usefull than the 'gnuplot' file; as the |
|
|
182 |
results are already |
|
|
183 |
|
|
|
184 |
|
|
|
185 |
__-v__ Sets the verbosity level. Level 4 and above prints |
|
|
186 |
information on headers, level 3 and above prints response |
|
|
187 |
codes (for example, 404, 200), and level 2 and above prints |
|
|
188 |
warnings and informational messages. |
|
|
189 |
|
|
|
190 |
|
|
|
191 |
__-w__ Print out results in HTML tables. The default |
|
|
192 |
table is two columns wide, with a white |
|
|
193 |
background. |
|
|
194 |
|
|
|
195 |
|
|
|
196 |
__-x__ ''attributes'' |
|
|
197 |
|
|
|
198 |
|
|
|
199 |
The string to use as attributes for |
|
|
200 |
here__ |
|
|
201 |
__ |
|
|
202 |
|
|
|
203 |
|
|
|
204 |
__-y__ ''attributes'' |
|
|
205 |
|
|
|
206 |
|
|
|
207 |
The string to use as attributes for |
|
|
208 |
|
|
|
209 |
|
|
|
210 |
__-z__ ''attributes'' |
|
|
211 |
|
|
|
212 |
|
|
|
213 |
The string to use as attributes for |
|
|
214 |
|
|
|
215 |
|
|
|
216 |
__-V__ Display the version number and exit. |
|
|
217 |
|
|
|
218 |
|
|
|
219 |
__-h__ Display usage information. |
|
|
220 |
!!BUGS |
|
|
221 |
|
|
|
222 |
|
|
|
223 |
There are various statically declared buffers of fixed |
|
|
224 |
length. Combined with inefficient parsing of the command |
|
|
225 |
line arguments, the response headers from the server, and |
|
|
226 |
other external inputs, these buffers might |
|
|
227 |
overflow. |
|
|
228 |
|
|
|
229 |
|
|
|
230 |
__Ab__ does not implement HTTP/1.x fully; instead, it |
|
|
231 |
only accepts some 'expected' forms of |
|
|
232 |
responses. |
|
|
233 |
|
|
|
234 |
|
|
|
235 |
The rather heavy use of __strstr(3)__ by the program may |
|
|
236 |
skew performance results, since it uses significant CPU |
|
|
237 |
resources. Make sure that performance limits are not hit by |
|
|
238 |
__ab__ before your server's limit is |
|
|
239 |
reached. |
|
|
240 |
|
|
|
241 |
|
|
|
242 |
The HTML output is not as complete as the text |
|
|
243 |
output. |
|
|
244 |
|
|
|
245 |
|
|
|
246 |
Up to version 1.3d __ab__ has propably reported values |
|
|
247 |
way to low for most measurements; as a single timeout (which |
|
|
248 |
is usually in the order of seconds) will shift several |
|
|
249 |
thousands of milli-second responses by a considerable |
|
|
250 |
factor. This was further componded by a serious interger |
|
|
251 |
overrun which would for realistic run's (i.e. those longer |
|
|
252 |
than a few minutes) produce believable but totally bogus |
|
|
253 |
results. Thanks to Sander Temme |
|
|
254 |
__ |
|
|
255 |
!!SEE ALSO |
|
|
256 |
|
|
|
257 |
|
|
|
258 |
__apache(8)__ |
|
|
259 |
---- |