mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	my best guess at what the documentation for the AcceptMutex directive should look like. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89533 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			229 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			229 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!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="#acceptmutex">AcceptMutex</a>
 | |
| <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="AcceptMutex">AcceptMutex Directive</A></H2>
 | |
| <p><A
 | |
|  HREF="directive-dict.html#Syntax"
 | |
|  REL="Help"
 | |
| ><STRONG>Syntax:</STRONG></A> AcceptMutex default|<EM>method</EM><BR>
 | |
| <A
 | |
|  HREF="directive-dict.html#Default"
 | |
|  REL="Help"
 | |
| ><STRONG>Default:</STRONG></A> <code>AcceptMutex default</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>
 | |
| 
 | |
| <p>The <code>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">LockFile</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">LockFile</a>
 | |
| directive.</dd>
 | |
| 
 | |
| <dt><code>sysvsem</code></dt>
 | |
| <dd>uses SySV-style semaphores to implement the mutex.</dd>
 | |
| 
 | |
| <dt><code>proc_pthread</code></dt>
 | |
| <dd>uses POSIX mutexes as implemented by the POSIX Threads (PThreads)
 | |
| specification.</dd>
 | |
| 
 | |
| </dl>
 | |
| 
 | |
| <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>
 |