<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.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.
-->
<modulesynopsis metafile="mod_status.xml.meta">
<name>mod_status</name>
<description>Provides information on server activity and
performance</description>
<status>Base</status>
<sourcefile>mod_status.c</sourcefile>
<identifier>status_module</identifier>
<summary>
<p>The Status module allows a server administrator to find out
how well their server is performing. A HTML page is presented
that gives the current server statistics in an easily readable
form. If required this page can be made to automatically
refresh (given a compatible browser). Another page gives a
simple machine-readable list of the current server state.</p>
<p>The details given are:</p>
<ul>
<li>The number of worker serving requests</li>
<li>The number of idle worker</li>
<li>The status of each worker, the number of requests that
worker has performed and the total number of bytes served by
the worker (*)</li>
<li>A total number of accesses and byte count served (*)</li>
<li>The time the server was started/restarted and the time it
has been running for</li>
<li>Averages giving the number of requests per second, the
number of bytes served per second and the average number of
bytes per request (*)</li>
<li>The current percentage CPU used by each worker and in
total by all workers combined (*)</li>
<li>The current hosts and requests being processed (*)</li>
</ul>
<p>The lines marked "(*)" are only available if
<directive module="core">ExtendedStatus</directive>
is <code>On</code>. In version 2.3.6, loading mod_status will
toggle <directive module="core">ExtendedStatus</directive> On
by default.</p>
</summary>
<section id="enable">
<title>Enabling Status Support</title>
<p>To enable status reports only for browsers from the example.com
domain add this code to your <code>httpd.conf</code>
configuration file</p>
<highlight language="config">
&lt;Location "/server-status"&gt;
SetHandler server-status
Require host example.com
&lt;/Location&gt;
</highlight>
<p>You can now access server statistics by using a Web browser
to access the page
<code>http://your.server.name/server-status</code></p>
</section>
<section id="autoupdate">
<title>Automatic Updates</title>
<p>You can get the status page to update itself automatically if
you have a browser that supports "refresh". Access the page
<code>http://your.server.name/server-status?refresh=N</code> to
refresh the page every N seconds.</p>
</section>
<section id="machinereadable">
<title>Machine Readable Status File</title>
<p>A machine-readable version of the status file is available by
accessing the page
<code>http://your.server.name/server-status?auto</code>. This
is useful when automatically run, see the Perl program
<code>log_server_status</code>, which you will find in the
<code>/support</code> directory of your Apache HTTP Server installation.</p>
<note>
<strong>It should be noted that if <module>mod_status</module> is
loaded into the server, its handler capability is available
in <em>all</em> configuration files, including
<em>per</em>-directory files (<em>e.g.</em>,
<code>.htaccess</code>). This may have security-related
ramifications for your site.</strong>
</note>
</section>
<section id="troubleshoot">
<title>Using server-status to troubleshoot</title>
<p>The <code>server-status</code> page may be used as a starting
place for troubleshooting a situation where your server is consuming
all available resources (CPU or memory), and you wish to identify
which requests or clients are causing the problem.</p>
<p>First, ensure that you have <directive
module="core">ExtendedStatus</directive> set on, so that you can see
the full request and client information for each child or
thread.</p>
<p>Now look in your process list (using <code>top</code>, or similar
process viewing utility) to identify the specific processes that are
the main culprits. Order the output of <code>top</code> by CPU
usage, or memory usage, depending on what problem you're trying to
address.</p>
<p>Reload the <code>server-status</code> page, and look for those process
ids, and you'll be able to see what request is being served by that
process, for what client. Requests are transient, so you may need to
try several times before you catch it in the act, so to speak.</p>
<p>This process <em>should</em> give you some idea what client, or
what type of requests, are primarily responsible for your load
problems. Often you will identify a particular web application that
is misbehaving, or a particular client that is attacking your
site.</p>
</section>
</modulesynopsis>