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