| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Apache MPM prefork</TITLE> |
| </HEAD> |
| |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) --> |
| <BODY |
| BGCOLOR="#FFFFFF" |
| TEXT="#000000" |
| LINK="#0000FF" |
| VLINK="#000080" |
| ALINK="#FF0000" |
| > |
| <!--#include virtual="header.html" --> |
| |
| <H1 ALIGN="CENTER">Multi-Processing Module prefork</H1> |
| <P> |
| This Multi-Processing Module implements a non-threaded, pre-forking |
| web server. |
| </P> |
| |
| <P><A |
| HREF="module-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> MPM |
| <BR> |
| <A |
| HREF="module-dict.html#SourceFile" |
| REL="Help" |
| ><STRONG>Source File:</STRONG></A> prefork.c |
| <BR> |
| <A |
| HREF="module-dict.html#ModuleIdentifier" |
| REL="Help" |
| ><STRONG>Module Identifier:</STRONG></A> mpm_prefork_module |
| </P> |
| |
| <H2>Summary</H2> |
| |
| <p>This Multi-Processing Module (MPM) implements a non-threaded, |
| pre-forking web server which handles request in a manner very similar |
| to the default behavior of Apache 1.3 on Unix.</p> |
| |
| <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 <code>StartServers</code>, <code>MinSpareServers</code>, |
| <code>MaxSpareServers</code>, and <code>MaxServers</code> 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 |
| <code>MaxClients</code>, while sites with limited memory may need to |
| decrease <code>MaxClients</code> 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 <code>User</code> and |
| <code>Group</code> 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. |
| In addition, unless <a href="../suexec.html">suexec</a> is used, |
| these directives also set the privileges which will be inherited |
| by CGI scripts.</p> |
| |
| <p><code>MaxRequestsPerChild</code> controls how frequently the server |
| recycles processes by killing old ones and launching new ones.</p> |
| |
| <p>See also: <a href="../bind.html">Setting which addresses and ports |
| Apache uses</a>.</p> |
| |
| <H2>Directives</H2> |
| <UL> |
| <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#pidfile">PidFile</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="#maxspareservers">MaxSpareServers</a></li> |
| <li><a href="#minspareservers">MinSpareServers</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#startservers">StartServers</a></li> |
| <li><a href="mpm_common.html#user">User</a></li> |
| </UL> |
| |
| <p><hr> |
| |
| |
| <H2><A NAME="maxspareservers">MaxSpareServers directive</A></H2> |
| <!--%plaintext <?INDEX {\tt MaxSpareServers} directive> --> |
| <A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> MaxSpareServers <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>MaxSpareServers 10</CODE><BR> |
| <A |
| HREF="directive-dict.html#Context" |
| REL="Help" |
| ><STRONG>Context:</STRONG></A> server config<BR> |
| <A |
| HREF="directive-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> core<P> |
| |
| The MaxSpareServers 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> |
| |
| 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> |
| |
| See also <A HREF="#minspareservers">MinSpareServers</A> and |
| <A HREF="mpm_common.html#startservers">StartServers</A>.<P><HR> |
| |
| <H2><A NAME="minspareservers">MinSpareServers directive</A></H2> |
| <!--%plaintext <?INDEX {\tt MinSpareServers} directive> --> |
| <A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> MinSpareServers <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>MinSpareServers 5</CODE><BR> |
| <A |
| HREF="directive-dict.html#Context" |
| REL="Help" |
| ><STRONG>Context:</STRONG></A> server config<BR> |
| <A |
| HREF="directive-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> core<P> |
| |
| The MinSpareServers 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> |
| |
| 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> |
| |
| This directive has no effect on Microsoft Windows. |
| |
| <P> |
| |
| See also <A HREF="#maxspareservers">MaxSpareServers</A> and |
| <A HREF="mpm_common.html#startservers">StartServers</A>. |
| |
| |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |