mirror of
https://github.com/apache/httpd.git
synced 2025-07-19 02:42:17 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96159 13f79535-47bb-0310-9956-ffa450edef68
111 lines
12 KiB
Plaintext
111 lines
12 KiB
Plaintext
<html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!--
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
This file is generated from xml source: DO NOT EDIT
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
--><title>prefork- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module prefork</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td nowrap="nowrap" valign="top"><span class="help">Description:</span></td><td>Implements a non-threaded, pre-forking web server</td></tr><tr><td nowrap="nowrap"><a href="module-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td nowrap="nowrap"><a href="module-dict.html#ModuleIdentifier" class="help">Module Identifier:</a></td><td>mpm_prefork_module</td></tr></table></td></tr></table><h2>Summary</h2>
|
|
<p>This Multi-Processing Module (MPM) implements a non-threaded,
|
|
pre-forking web server that handles requests in a manner similar
|
|
to Apache 1.3. It is appropriate for sites that need to avoid
|
|
threading for compatibility with non-thread-safe libraries. It
|
|
is also the best MPM for isolating each request, so that a problem
|
|
with a single request will not affect any other.</p>
|
|
|
|
<p>This MPM is very self-regulating, so it is rarely necessary to
|
|
adjust its configuration directives. Most important is that
|
|
<a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a> be big enough to
|
|
handle as many simultaneous requests as you expect to receive, but
|
|
small enough to assure that there is enough physical RAM for all
|
|
processes.</p>
|
|
|
|
<h2>Directives</h2><ul><li><a href="#acceptmutex">AcceptMutex</a></li><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="mpm_common.html#group">Group</a></li><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#lockfile">LockFile</a></li><li><a href="mpm_common.html#maxclients">MaxClients</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#maxspareservers">MaxSpareServers</a></li><li><a href="#maxspareservers">MaxSpareServers</a></li><li><a href="mpm_common.html#minspareservers">MinSpareServers</a></li><li><a href="#minspareservers">MinSpareServers</a></li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="mpm_common.html#serverlimit">ServerLimit</a></li><li><a href="mpm_common.html#startservers">StartServers</a></li><li><a href="mpm_common.html#user">User</a></li></ul><p><strong>See also </strong></p><ul><li><a href="../bind.html">Setting which addresses and
|
|
ports Apache uses</a></li></ul><h2>How it Works</h2>
|
|
<p>A single control process is responsible for launching child
|
|
processes which listen for connections and serve them when they
|
|
arrive. Apache always tries to maintain several <em>spare</em>
|
|
or idle server processes, which stand ready to serve incoming
|
|
requests. In this way, clients do not need to wait for a new
|
|
child processes to be forked before their requests can be
|
|
served.</p>
|
|
|
|
<p>The <a href="mpm_common.html#startservers" class="directive"><code class="directive">StartServers</code></a>,
|
|
<a href="#minspareservers" class="directive"><code class="directive">MinSpareServers</code></a>,
|
|
<a href="#maxspareservers" class="directive"><code class="directive">MaxSpareServers</code></a>, and
|
|
<a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a> regulate how
|
|
the parent process creates children to serve requests. In general,
|
|
Apache is very self-regulating, so most sites do not need to
|
|
adjust these directives from their default values. Sites which
|
|
need to serve more than 256 simultaneous requests may need to
|
|
increase <a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a>,
|
|
while sites with limited memory may need to decrease <a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a> to keep the server from
|
|
thrashing (swapping memory to disk and back). More information
|
|
about tuning process creation is provided in the <a href="../misc/perf-tuning.html">performance hints</a>
|
|
documentation.</p>
|
|
|
|
<p>While the parent process is usually started as root under Unix
|
|
in order to bind to port 80, the child processes are launched by
|
|
Apache as a less-privileged user. The <a href="mpm_common.html#user" class="directive"><code class="directive">User</code></a> and <a href="mpm_common.html#group" class="directive"><code class="directive">Group</code></a> directives are used to set
|
|
the privileges of the Apache child processes. The child processes
|
|
must be able to read all the content that will be served, but
|
|
should have as few privileges beyond that as possible.</p>
|
|
|
|
<p><a href="mpm_common.html#maxrequestsperchild" class="directive"><code class="directive">MaxRequestsPerChild</code></a>
|
|
controls how frequently the server recycles processes by killing
|
|
old ones and launching new ones.</p>
|
|
<hr/><h2><a name="AcceptMutex">AcceptMutex</a> <a name="acceptmutex">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td nowrap="nowrap"><strong>Description: </strong></td><td>Method that Apache uses to serialize multiple children
|
|
accepting requests on network sockets</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>AcceptMutex default|<em>method</em></td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>AcceptMutex default</code></td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Module" class="help">Module:</a></td><td>prefork</td></tr></table></td></tr></table>
|
|
<p>The <code class="directive">AcceptMutex</code> directives sets the
|
|
method that Apache uses to serialize multiple children accepting
|
|
requests on network sockets. Prior to Apache 2.0, the method was
|
|
selectable only at compile time. The optimal method to use is
|
|
highly architecture and platform dependent. For further details,
|
|
see the <a href="../misc/perf-tuning.html">performance tuning</a>
|
|
documentation.</p>
|
|
|
|
<p>If this directive is set to <code>default</code>, then the
|
|
compile-time selected default will be used. Other possible
|
|
methods are listed below. Note that not all methods are
|
|
available on all platforms. If a method is specified which is
|
|
not available, a message will be written to the error log
|
|
listing the available methods.</p>
|
|
|
|
<dl>
|
|
<dt><code>flock</code></dt>
|
|
|
|
<dd>uses the <code>flock(2)</code> system call to lock the
|
|
file defined by the <a href="mpm_common.html#lockfile" class="directive"><code class="directive">LockFile</code></a> directive.</dd>
|
|
|
|
<dt><code>fcntl</code></dt>
|
|
|
|
<dd>uses the <code>fnctl(2)</code> system call to lock the
|
|
file defined by the <a href="mpm_common.html#lockfile" class="directive"><code class="directive">LockFile</code></a> directive.</dd>
|
|
|
|
<dt><code>sysvsem</code></dt>
|
|
|
|
<dd>uses SySV-style semaphores to implement the mutex.</dd>
|
|
|
|
<dt><code>pthread</code></dt>
|
|
|
|
<dd>uses POSIX mutexes as implemented by the POSIX Threads
|
|
(PThreads) specification.</dd>
|
|
</dl>
|
|
<hr/><h2><a name="MaxSpareServers">MaxSpareServers</a> <a name="maxspareservers">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td nowrap="nowrap"><strong>Description: </strong></td><td>Maximum number of idle child server processes</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MaxSpareServers <em>number</em><br></td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MaxSpareServers 10</code></td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Module" class="help">Module:</a></td><td>prefork</td></tr></table></td></tr></table>
|
|
<p>The <code class="directive">MaxSpareServers</code> directive sets the
|
|
desired maximum number of <em>idle</em> child server processes. An
|
|
idle process is one which is not handling a request. If there are
|
|
more than MaxSpareServers idle, then the parent process will kill
|
|
off the excess processes.</p>
|
|
|
|
<p>Tuning of this parameter should only be necessary on very
|
|
busy sites. Setting this parameter to a large number is almost
|
|
always a bad idea.</p>
|
|
<p><strong>See also </strong></p><ul><li><a href="#minspareservers" class="directive"><code class="directive">MinSpareServers</code></a></li><li><a href="mpm_common.html#startservers" class="directive"><code class="directive">StartServers</code></a></li></ul><hr/><h2><a name="MinSpareServers">MinSpareServers</a> <a name="minspareservers">Directive</a></h2><table cellpadding="1" cellspacing="0" border="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td nowrap="nowrap"><strong>Description: </strong></td><td>Minimum number of idle child server processes</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Syntax" class="help">Syntax:</a></td><td>MinSpareServers <em>number</em></td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Default" class="help">Default:</a></td><td><code>MinSpareServers 5</code></td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Context" class="help">Context:</a></td><td>server config</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Status" class="help">Status:</a></td><td>MPM</td></tr><tr><td nowrap="nowrap"><a href="directive-dict.html#Module" class="help">Module:</a></td><td>prefork</td></tr></table></td></tr></table>
|
|
<p>The <code class="directive">MinSpareServers</code> directive sets the
|
|
desired minimum number of <em>idle</em> child server processes. An
|
|
idle process is one which is not handling a request. If there are
|
|
fewer than MinSpareServers idle, then the parent process creates
|
|
new children at a maximum rate of 1 per second.</p>
|
|
|
|
<p>Tuning of this parameter should only be necessary on very
|
|
busy sites. Setting this parameter to a large number is almost
|
|
always a bad idea.</p>
|
|
<p><strong>See also </strong></p><ul><li><a href="#maxspareservers" class="directive"><code class="directive">MaxSpareServers</code></a></li><li><a href="mpm_common.html#startservers" class="directive"><code class="directive">StartServers</code></a></li></ul><hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="Index"/></a><a href="../"><img src="../images/home.gif" alt="Home"/></a></body></html> |