| <!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> |