| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Apache MPM Common Directives</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 Common Directives</H1> |
| |
| <P>This file documents directives that are implemented by more |
| than one multi-processing module (MPM). |
| </P> |
| |
| <H2>Directives</H2> |
| <UL> |
| <li><a href="#coredumpdirectory">CoreDumpDirectory</a></li> |
| <li><a href="#pidfile">PidFile</a></li> |
| <li><a href="#lockfile">LockFile</a></li> |
| <li><a href="#maxclients">MaxClients</a></li> |
| <li><a href="#maxrequestsperchild">MaxRequestsPerChild</a></li> |
| <li><a href="#maxsparethreads">MaxSpareThreads</a></li> |
| <li><a href="#minsparethreads">MinSpareThreads</a></li> |
| <li><a href="#scoreboardfile">ScoreBoardFile</a></li> |
| <li><a href="#startservers">StartServers</a></li> |
| <li><a href="#threadsperchild">ThreadsPerChild</a></li> |
| </UL> |
| <HR> |
| |
| <H2><A NAME="coredumpdirectory">CoreDumpDirectory directive</A></H2> |
| <!--%plaintext <?INDEX {\tt CoreDumpDirectory} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> CoreDumpDirectory <EM>directory</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> the same location as ServerRoot<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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <p>This controls the directory to which Apache attempts to switch |
| before dumping core. The default is in the <A |
| HREF="core.html#serverroot">ServerRoot</A> directory, however since |
| this should not be writable by the user the server runs as, core dumps |
| won't normally get written. If you want a core dump for debugging, |
| you can use this directive to place it in a different location.<P><HR> |
| |
| <H2><A NAME="pidfile">PidFile directive</A></H2> |
| <!--%plaintext <?INDEX {\tt PidFile} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> PidFile <EM>filename</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>PidFile logs/httpd.pid</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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <p>The PidFile directive sets the file to which the server records the |
| process id of the daemon. If the filename does not begin with a slash |
| (/) then it is assumed to be relative to the <A |
| HREF="core.html#serverroot">ServerRoot</A>.</p> |
| |
| <p>It is often useful to be able to send the server a signal, so that |
| it closes and then reopens its <A |
| HREF="core.html#errorlog">ErrorLog</A> and TransferLog, and re-reads |
| its configuration files. This is done by sending a SIGHUP (kill -1) |
| signal to the process id listed in the PidFile.</p> |
| |
| <p>The PidFile is subject to the same warnings about log file placement and |
| <A HREF="../misc/security_tips.html#serverroot">security</A>.</p> |
| |
| |
| <P><HR> |
| |
| |
| <H2><A NAME="lockfile">LockFile directive</A></H2> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> LockFile <EM>filename</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>LockFile logs/accept.lock</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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <p>The LockFile directive sets the path to the lockfile used when |
| Apache is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or |
| USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be |
| left at its default value. The main reason for changing it is if |
| the <CODE>logs</CODE> directory is NFS mounted, since <STRONG>the lockfile |
| must be stored on a local disk</STRONG>. The PID of the main |
| server process is automatically appended to the filename. <P> |
| |
| <p><STRONG>SECURITY:</STRONG> It is best to avoid putting this file in a |
| world writable directory such as <CODE>/var/tmp</CODE> because someone |
| could create a denial of service attack and prevent the server from |
| starting by creating a lockfile with the same name as the one the |
| server will try to create.</p> |
| |
| <hr> |
| |
| <H2><A NAME="maxclients">MaxClients directive</A></H2> |
| <!--%plaintext <?INDEX {\tt MaxClients} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> MaxClients <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>MaxClients 8</code> (with threads) |
| <code>MaxClients 256</code> (no threads)<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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <P>The MaxClients directive sets the limit on the number of child |
| processes that will be created to serve requests. When the server is |
| built without threading, no more than this number of clients can be |
| served simultaneously. To configure more than 256 clients, you must |
| edit the <code>HARD_SERVER_LIMIT</code> entry in |
| <code>mpm_default.h</code> and recompile. |
| |
| <P>Any connection attempts over the MaxClients limit will normally |
| be queued, up to a number based on the <A HREF="#listenbacklog"> |
| ListenBacklog</A> directive. Once a child process is freed at the |
| end of a different request, the connection will then be serviced.</p> |
| |
| <p>When the server is compiled with threading, then the maximum number |
| of simultaneous requests that can be served is obtained from the value |
| of this directive multiplied by <a |
| href="#threadsperchild">ThreadsPerChild</a>.</p> |
| |
| <HR> |
| |
| <H2><A NAME="maxrequestsperchild">MaxRequestsPerChild directive</A></H2> |
| <!--%plaintext <?INDEX {\tt MaxRequestsPerChild} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> MaxRequestsPerChild <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>MaxRequestsPerChild 10000</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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <p>The MaxRequestsPerChild directive sets the limit on the number of requests |
| that an individual child server process will handle. After MaxRequestsPerChild |
| requests, the child process will die. If MaxRequestsPerChild is 0, then |
| the process will never expire.<P> |
| |
| Setting MaxRequestsPerChild to a non-zero limit has two beneficial effects: |
| <UL> |
| <LI>it limits the amount of memory that process can consume by (accidental) |
| memory leakage; |
| <LI> by giving processes a finite lifetime, it helps reduce the |
| number of processes when the server load reduces. |
| </UL> |
| |
| <P><STRONG>NOTE:</STRONG> For <EM>KeepAlive</EM> requests, only the first |
| request is counted towards this limit. In effect, it changes the |
| behavior to limit the number of <EM>connections</EM> per child. |
| |
| <P><HR> |
| |
| |
| <H2><A NAME="maxsparethreads">MaxSpareThreads directive</A></H2> |
| <!--%plaintext <?INDEX {\tt MaxSpareServers} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> MaxSpareThreads <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>MaxSpareThreads ??</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<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread</p> |
| |
| <P>Content needed here!</p> |
| |
| <p>See also <A HREF="#minsparethreads">MinSpareThreads</A> and |
| <A HREF="#startservers">StartServers</A>. |
| |
| <P><HR> |
| |
| <H2><A NAME="minsparethreads">MinSpareThreads directive</A></H2> |
| <!--%plaintext <?INDEX {\tt MinSpareServers} directive> --> |
| <p><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 ???</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<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread</p> |
| |
| <p><strong>fix me</strong></p> |
| |
| <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="#maxsparethreads">MaxSpareThreads</A> and |
| <A HREF="#startservers">StartServers</A>.<P><HR> |
| |
| |
| <H2><A NAME="scoreboardfile">ScoreBoardFile directive</A></H2> |
| <!--%plaintext <?INDEX {\tt ScoreBoardFile} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> ScoreBoardFile <EM>filename</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>ScoreBoardFile logs/apache_status</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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Compatibility" |
| REL="Help" |
| > |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <p>The ScoreBoardFile directive is required on some architectures to place |
| a file that the server will use to communicate between its children and |
| the parent. The easiest way to find out if your architecture requires |
| a scoreboard file is to run Apache and see if it creates the file named |
| by the directive. If your architecture requires it then you must ensure |
| that this file is not used at the same time by more than one invocation |
| of Apache.</p> |
| |
| <p>If you have to use a ScoreBoardFile then you may see improved speed by |
| placing it on a RAM disk. But be careful that you heed the same warnings |
| about log file placement and |
| <A HREF="../misc/security_tips.html">security</A>.</p> |
| |
| <p><STRONG>See Also</STRONG>: |
| <A HREF="../stopping.html">Stopping and Restarting Apache</A></P> |
| |
| |
| <P><HR> |
| |
| <H2><A NAME="startservers">StartServers directive</A></H2> |
| <!--%plaintext <?INDEX {\tt StartServers} directive> --> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> StartServers <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>StartServers 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> MPM<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread, prefork</p> |
| |
| <p>The StartServers directive sets the number of child server processes created |
| on startup. As the number of processes is dynamically controlled depending |
| on the load, there is usually little reason to adjust this parameter.</P> |
| |
| <P>See also <A HREF="#minsparethreads">MinSpareThreads</A> and |
| <A HREF="#maxsparethreads">MaxSpareThreads</A>.<P><HR> |
| |
| <H2><A NAME="threadsperchild">ThreadsPerChild</A></H2> |
| <p><A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> ThreadsPerChild <EM>number</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> <CODE>ThreadsPerChild 50</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> Base<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mpmt_pthread</p> |
| |
| <P>This directive sets the number of threads created by each child |
| process.</p> |
| |
| |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |