<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>ab - Apache HTTP server benchmarking tool - Apache HTTP Server</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/programs/ab.html" rel="canonical" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.0</a> &gt; <a href="./">Programs</a></div><div id="page-content"><div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/programs/ab.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>ab - Apache HTTP server benchmarking tool</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/programs/ab.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../ko/programs/ab.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/programs/ab.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>

    <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>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Synopsis</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Options</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#bugs">Bugs</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Synopsis</a></h2>
    <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>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Options</a></h2>
    <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>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="bugs" id="bugs">Bugs</a></h2>
    <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>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/programs/ab.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../ko/programs/ab.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/programs/ab.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>