<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="ab.xml.meta">
<parentdocument href="./">Programs</parentdocument>

<title>ab - Apache HTTP server benchmarking tool</title>

<summary>
    <p><code>ab</code> 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.</p>
</summary>
<seealso><program>httpd</program></seealso>

<section id="synopsis"><title>Synopsis</title>
    <p><code><strong>ab</strong>
    [ -<strong>A</strong> <var>auth-username</var>:<var>password</var> ]
    [ -<strong>c</strong> <var>concurrency</var> ]
    [ -<strong>C</strong> <var>cookie-name</var>=<var>value</var> ]
    [ -<strong>d</strong> ]
    [ -<strong>e</strong> <var>csv-file</var> ]
    [ -<strong>g</strong> <var>gnuplot-file</var> ]
    [ -<strong>h</strong> ]
    [ -<strong>H</strong> <var>custom-header</var> ]
    [ -<strong>i</strong> ]
    [ -<strong>k</strong> ]
    [ -<strong>n</strong> <var>requests</var> ]
    [ -<strong>p</strong> <var>POST-file</var> ]
    [ -<strong>P</strong> <var>proxy-auth-username</var>:<var>password</var> ]
    [ -<strong>q</strong> ]
    [ -<strong>s</strong> ]
    [ -<strong>S</strong> ]
    [ -<strong>t</strong> <var>timelimit</var> ]
    [ -<strong>T</strong> <var>content-type</var> ]
    [ -<strong>v</strong> <var>verbosity</var>]
    [ -<strong>V</strong> ]
    [ -<strong>w</strong> ]
    [ -<strong>x</strong> <var>&lt;table&gt;-attributes</var> ]
    [ -<strong>X</strong> <var>proxy</var>[:<var>port</var>] ]
    [ -<strong>y</strong> <var>&lt;tr&gt;-attributes</var> ]
    [ -<strong>z</strong> <var>&lt;td&gt;-attributes</var> ]
    [http://]<var>hostname</var>[:<var>port</var>]/<var>path</var></code></p>
</section>

<section id="options"><title>Options</title>
    <dl>
    <dt><code>-A <var>auth-username</var>:<var>password</var></code></dt>
    <dd>Supply BASIC Authentication credentials to the server. The username and
    password are separated by a single <code>:</code> and sent on the wire
    base64 encoded. The string is sent regardless of whether the server needs
    it (<em>i.e.</em>, has sent an 401  authentication needed).</dd>

    <dt><code>-c <var>concurrency</var></code></dt>
    <dd>Number of multiple requests to perform at a time. Default is one
    request at a time.</dd>

    <dt><code>-C <var>cookie-name</var>=<var>value</var></code></dt>
    <dd>Add a <code>Cookie:</code> line to the request. The  argument  is
    typically in the form of a <code><var>name</var>=<var>value</var></code>
    pair. This field is repeatable.</dd>

    <dt><code>-d</code></dt>
    <dd>Do not display the "percentage served within XX [ms] table". (legacy
    support).</dd>

    <dt><code>-e <var>csv-file</var></code></dt>
    <dd>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'.</dd>

    <dt><code>-g <var>gnuplot-file</var></code></dt>
    <dd>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. </dd>

    <dt><code>-h</code></dt>
    <dd>Display usage information.</dd>

    <dt><code>-H <var>custom-header</var></code></dt>
    <dd>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 (<em>i.e.</em>, <code>"Accept-Encoding: zip/zop;8bit"</code>).</dd>

    <dt><code>-i</code></dt>
    <dd>Do <code>HEAD</code> requests instead of <code>GET</code>.</dd>

    <dt><code>-k</code></dt>
    <dd>Enable the HTTP KeepAlive feature, <em>i.e.</em>, perform multiple
    requests within one HTTP session. Default is no KeepAlive.</dd>

    <dt><code>-n <var>requests</var></code></dt>
    <dd>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.</dd>

    <dt><code>-p <var>POST-file</var></code></dt>
    <dd>File containing data to POST.</dd>

    <dt><code>-P <var>proxy-auth-username</var>:<var>password</var></code></dt>
    <dd>Supply BASIC Authentication credentials to a proxy en-route. The
    username and password are separated by a single <code>:</code> and sent on 
    the  wire base64 encoded. The string is sent regardless of whether the
    proxy needs it (<em>i.e.</em>, has  sent an 407 proxy authentication
    needed).</dd>

    <dt><code>-q</code></dt>
    <dd>When processing more than 150 requests, <code>ab</code> outputs a
    progress count on <code>stderr</code> every 10% or 100 requests or so. The 
    <code>-q</code> flag will suppress these messages.</dd>

    <dt><code>-s</code></dt>
    <dd>When compiled in (<code>ab -h</code> will show you) use the SSL
    protected <code>https</code> rather than the <code>http</code> protocol.
    This feature is experimental and <em>very</em> rudimentary. You probably
    do not want to use it.</dd>

    <dt><code>-S</code></dt>
    <dd>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).</dd>

    <dt><code>-t <var>timelimit</var></code></dt>
    <dd>Maximum number of seconds to  spend  for  benchmarking. This implies a
    <code>-n 50000</code> internally. Use this to benchmark the server within a
    fixed total amount of time. Per default there is no timelimit.</dd>

    <dt><code>-T <var>content-type</var></code></dt>
    <dd>Content-type header to use for POST data.</dd>

    <dt><code>-v <var>verbosity</var></code></dt>
    <dd>Set verbosity level - <code>4</code> and above prints information on
    headers, <code>3</code> and above prints response codes (404, 200, etc.),
    <code>2</code> and above prints warnings and info.</dd>

    <dt><code>-V</code></dt>
    <dd>Display version number and exit.</dd>

    <dt><code>-w</code></dt>
    <dd>Print out results in HTML tables. Default table is two columns wide,
    with a white background.</dd>

    <dt><code>-x <var>&lt;table&gt;-attributes</var></code></dt>
    <dd>String to use as attributes for <code>&lt;table&gt;</code>. Attributes
    are inserted <code>&lt;table <var>here</var> &gt;</code>.</dd>

    <dt><code>-X <var>proxy</var>[:<var>port</var>]</code></dt>
    <dd>Use a proxy server for the requests.</dd>

    <dt><code>-y <var>&lt;tr&gt;-attributes</var></code></dt>
    <dd>String to use as attributes for <code>&lt;tr&gt;</code>.</dd>

    <dt><code>-z <var>&lt;td&gt;-attributes</var></code></dt>
    <dd>String to use as attributes for <code>&lt;td&gt;</code>.</dd>
    </dl>
</section>

<section id="bugs"><title>Bugs</title>
    <p>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.</p>

    <p>It does not implement HTTP/1.x fully; only accepts some 'expected' forms
    of responses. The rather heavy use of <code>strstr(3)</code> shows up top
    in profile, which might indicate a performance problem; <em>i.e.</em>, you
    would measure the <code>ab</code> performance rather than the server's.</p>
</section>

</manualpage>
