mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-31 19:10:37 +03:00 
			
		
		
		
	the old mpmt_pthread directory to the new threaded directory. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88199 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			106 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 | |
| <HTML>
 | |
| <HEAD>
 | |
| <TITLE>Apache MPM threaded</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 threaded</H1>
 | |
| <P>
 | |
| This Multi-Processing Module implements a hybrid multi-threaded
 | |
| multi-process 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> threaded.c
 | |
| <BR>
 | |
| <A
 | |
| HREF="module-dict.html#ModuleIdentifier"
 | |
| REL="Help"
 | |
| ><STRONG>Module Identifier:</STRONG></A> mpm_threaded_module
 | |
| </P>
 | |
| 
 | |
| <H2>Summary</H2>
 | |
| 
 | |
| <p>This Multi-Processing Module (MPM) is the default for most unix-like
 | |
| operating systems.  It implements a hybrid
 | |
| multi-process multi-threaded server.  Each process has a fixed number
 | |
| of threads.  The server adjusts to handle load by increasing or
 | |
| decreasing the number of processes.</p>
 | |
| 
 | |
| <p>A single control process is responsible for launching child
 | |
| processes.  Each child process creates a fixed number of threads as
 | |
| specified in the <code>ThreadsPerChild</code> directive.
 | |
| The individual threads then listen for connections and
 | |
| serve them when they arrive.</p>
 | |
| 
 | |
| <p>Apache always tries to maintain a pool of <em>spare</em> or idle
 | |
| server threads, which stand ready to serve incoming requests.  In this
 | |
| way, clients do not need to wait for a new threads or processes to be
 | |
| created before their requests can be served.  Apache assesses the
 | |
| total number of idle threads in all processes, and forks or kills
 | |
| processes to keep this number within the boundaries specified by
 | |
| <code>MinSpareThreads</code> and <code>MaxSpareThreads</code>.
 | |
| Since this process is very self-regulating, it is rarely necessary to
 | |
| modify these directives from their default values.  The maximum
 | |
| number of clients that may be served simultaneously is determined
 | |
| by multiplying the maximum number of server processes that
 | |
| will be created (<code>MaxClients</code>) by the number of threads
 | |
| created in each process (<code>ThreadsPerChild</code>).</p>
 | |
| 
 | |
| <p>While the parent process is usually started as root under Unix in
 | |
| order to bind to port 80, the child processes and threads 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="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
 | |
| <li><a href="mpm_common.html#minsparethreads">MinSpareThreads</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#threadsperchild">ThreadsPerChild</a></li>
 | |
| <li><a href="mpm_common.html#user">User</a></li>
 | |
| </UL>
 | |
| 
 | |
| <!--#include virtual="footer.html" -->
 | |
| </BODY>
 | |
| </HTML>
 |