perchild.html revision e0b181d3bfa99dfb992df3024b397660cb7afbe9
70N/A<html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!--
70N/A XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1276N/A This file is generated from xml source: DO NOT EDIT
70N/A XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1665N/A --><title>perchild- Apache HTTP Server</title><link rel="stylesheet" type="text/css" href="/style/manual.css"/></head><body><blockquote><div align="center"><img src="/images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache Module perchild</h1><table bgcolor="#cccccc" cellpadding="0" cellspacing="1"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">Description:</span></td><td>Multi-Processing Module allowing for daemon processes
70N/A serving requests to be assigned a variety of different
70N/A userids</td></tr><tr><td><a class="help" href="module-dict.html#Status">Status:</a></td><td>MPM</td></tr><tr><td><a class="help" href="module-dict.html#ModuleIdentifier">Module&nbsp;Identifier:</a></td><td>mpm_perchild_module</td></tr></table></td></tr></table><h2>Summary</h2>
919N/A<blockquote><table><tr><td bgcolor="#ffe5f5">
919N/AThis MPM does not currently work on most platforms. Work is ongoing to
919N/Amake it functional.
919N/A</td></tr></table></blockquote>
919N/A
919N/A <p>This Multi-Processing Module (MPM) implements a hybrid
919N/A multi-process, multi-threaded web server. A fixed number of
919N/A processes create threads to handle requests. Fluctuations in
919N/A load are handled by increasing or decreasing the number of
919N/A threads in each process.</p>
919N/A
919N/A <p>A single control process launches the number of child processes
919N/A indicated by the <a class="directive" href="mpm_common.html#numservers"><code class="directive">NumServers</code></a> directive at server
919N/A startup. Each child process creates threads as specified in the
919N/A <code>StartThreads</code> directive. The individual threads then
919N/A listen for connections and serve them when they arrive.</p>
919N/A
70N/A <p>Apache always tries to maintain a pool of <em>spare</em> or
70N/A idle server threads, which stand ready to serve incoming
70N/A requests. In this way, clients do not need to wait for new
70N/A threads to be created. For each child process, Apache assesses
493N/A the number of idle threads and creates or destroys threads to
70N/A keep this number within the boundaries specified by
70N/A <code>MinSpareThreads</code> and <code>MaxSpareThreads</code>.
1549N/A Since this process is very self-regulating, it is rarely
70N/A necessary to modify these directives from their default values.
911N/A The maximum number of clients that may be served simultaneously
1549N/A is determined by multiplying the number of server processes
1549N/A that will be created (<code>NumServers</code>) by the maximum
1549N/A number of threads created in each process
911N/A (<code>MaxThreadsPerChild</code>).</p>
70N/A
1665N/A <p>While the parent process is usually started as root under
70N/A Unix in order to bind to port 80, the child processes and
70N/A threads are launched by Apache as a less-privileged user. The
70N/A <code>User</code> and <code>Group</code> directives are used to
70N/A set the privileges of the Apache child processes. The child
70N/A processes must be able to read all the content that will be
70N/A served, but should have as few privileges beyond that as
493N/A possible. In addition, unless <a href="/suexec.html">suexec</a> is used, these directives also
969N/A set the privileges which will be inherited by CGI scripts.</p>
70N/A
70N/A <p><code>MaxRequestsPerChild</code> controls how frequently the
70N/A server recycles processes by killing old ones and launching new
70N/A ones.</p>
970N/A
970N/A <p>See also: <a href="/bind.html">Setting which addresses and
970N/A ports Apache uses</a>.</p>
1196N/A
1196N/A <p>In addition it adds the extra ability to specify that
1425N/A specific processes should serve requests under different
1196N/A userids. These processes can then be associated with specific
70N/A virtual hosts.</p>
<h2>Directives</h2><ul><li><a href="#assignuserid">AssignUserId</a></li><li><a href="#childperuserid">ChildPerUserId</a></li><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#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#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li><li><a href="mpm_common.html#maxthreadsperchild">MaxThreadsPerChild</a></li><li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li><li><a href="mpm_common.html#numservers">NumServers</a></li><li><a href="mpm_common.html#pidfile">PidFile</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#startthreads">StartThreads</a></li><li><a href="mpm_common.html#user">User</a></li></ul><hr/><h2><a name="AssignUserId">AssignUserId</a> <a name="assignuserid">Directive</a></h2><table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a class="help" href="directive-dict.html#Syntax">Syntax:</a></td><td>AssignUserID <em>user_id</em> <em>group_id</em></td></tr><tr><td><a class="help" href="directive-dict.html#Context">Context:</a></td><td>virtual host</td></tr><tr><td><a class="help" href="directive-dict.html#Status">Status:</a></td><td>MPM</td></tr><tr><td><a class="help" href="directive-dict.html#Module">Module:</a></td><td>perchild</td></tr></table></td></tr></table>
<p>Tie a virtual host to a specific child process. Requests addressed to
the virtual host where this directive appears will be served by the process
running with the specified user and group id.</p>
<hr/><h2><a name="ChildPerUserId">ChildPerUserId</a> <a name="childperuserid">Directive</a></h2><table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1"><tr><td><table bgcolor="#ffffff"><tr><td><strong>Description: </strong></td><td/></tr><tr><td><a class="help" href="directive-dict.html#Syntax">Syntax:</a></td><td>ChildPerUserID <em>user_id</em>
<em>group_id</em> <em>child_id</em></td></tr><tr><td><a class="help" href="directive-dict.html#Context">Context:</a></td><td>server config</td></tr><tr><td><a class="help" href="directive-dict.html#Status">Status:</a></td><td>MPM</td></tr><tr><td><a class="help" href="directive-dict.html#Module">Module:</a></td><td>perchild</td></tr></table></td></tr></table>
<p>Specify a user id and group id for a specific child process. The number of
children if set by the <a href="mpm_common.html#numservers">NumServers</a>
directive. For example, the default value for <a href="mpm_common.html#numservers">NumServers</a> is 5 and that means
children ids 1,2,3,4 and 5 are available for assigment. If a child does not
have an associated ChildPerUserID, it inherits the <a href="mpm_common.html#user">User</a> and <a href="mpm_common.html#group">Group</a> settings from the main server </p>
<hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="/images/index.gif" alt="Index"/></a><a href="../"><img src="/images/home.gif" alt="Home"/></a></body></html>