mirror of
https://github.com/apache/httpd.git
synced 2025-06-03 10:42:03 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102965 13f79535-47bb-0310-9956-ffa450edef68
168 lines
7.4 KiB
XML
168 lines
7.4 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
|
|
|
|
<!--
|
|
Copyright 2002-2004 The Apache Software Foundation
|
|
|
|
Licensed 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="prefork.xml.meta">
|
|
|
|
<name>prefork</name>
|
|
<description>Implements a non-threaded, pre-forking web server</description>
|
|
<status>MPM</status>
|
|
<sourcefile>prefork.c</sourcefile>
|
|
<identifier>mpm_prefork_module</identifier>
|
|
|
|
<summary>
|
|
<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
|
|
<directive module="mpm_common">MaxClients</directive> 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>
|
|
</summary>
|
|
<seealso><a href="../bind.html">Setting which addresses and ports Apache
|
|
uses</a></seealso>
|
|
|
|
<section id="how-it-works"><title>How it Works</title>
|
|
<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 <dfn>spare</dfn>
|
|
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 <directive module="mpm_common">StartServers</directive>,
|
|
<directive module="prefork">MinSpareServers</directive>,
|
|
<directive module="prefork">MaxSpareServers</directive>, and
|
|
<directive module="mpm_common">MaxClients</directive> 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 <directive module="mpm_common">MaxClients</directive>,
|
|
while sites with limited memory may need to decrease <directive
|
|
module="mpm_common">MaxClients</directive> 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 <code>root</code>
|
|
under Unix in order to bind to port 80, the child processes are
|
|
launched by Apache as a less-privileged user. The <directive
|
|
module="mpm_common">User</directive> and <directive
|
|
module="mpm_common">Group</directive> 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><directive module="mpm_common">MaxRequestsPerChild</directive>
|
|
controls how frequently the server recycles processes by killing
|
|
old ones and launching new ones.</p>
|
|
</section>
|
|
|
|
<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>PidFile</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>Listen</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>LockFile</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>MaxClients</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>ServerLimit</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>StartServers</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>User</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>Group</name>
|
|
</directivesynopsis>
|
|
<directivesynopsis location="mpm_common"><name>AcceptMutex</name>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>MaxSpareServers</name>
|
|
<description>Maximum number of idle child server processes</description>
|
|
<syntax>MaxSpareServers <var>number</var></syntax>
|
|
<default>MaxSpareServers 10</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>MaxSpareServers</directive> 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 <directive>MaxSpareServers</directive> 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. If you are trying to set the value lower than
|
|
<directive module="prefork">MinSpareServers</directive>, Apache
|
|
will automatically adjust it to <directive
|
|
>MinSpareServers</directive><code> + 1</code>.</p>
|
|
</usage>
|
|
<seealso><directive module="prefork">MinSpareServers</directive></seealso>
|
|
<seealso><directive module="mpm_common">StartServers</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>MinSpareServers</name>
|
|
<description>Minimum number of idle child server processes</description>
|
|
<syntax>MinSpareServers <var>number</var></syntax>
|
|
<default>MinSpareServers 5</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>MinSpareServers</directive> 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 <directive>MinSpareServers</directive> 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>
|
|
</usage>
|
|
<seealso><directive module="prefork">MaxSpareServers</directive></seealso>
|
|
<seealso><directive module="mpm_common">StartServers</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|
|
|