diff options
Diffstat (limited to 'docs/manual/mod/prefork.xml')
-rw-r--r-- | docs/manual/mod/prefork.xml | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/docs/manual/mod/prefork.xml b/docs/manual/mod/prefork.xml new file mode 100644 index 0000000000..1dd788813b --- /dev/null +++ b/docs/manual/mod/prefork.xml @@ -0,0 +1,207 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?> +<modulesynopsis> +<name>prefork</name> +<description>Implements a non-threaded, pre-forking web server</description> +<status>MPM</status> +<sourcefile>prefork.c</sourcefile> +<identifier>mpm_prefork_module</identifier> + +<summary> + <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 <directive module="mpm_common">StartServers</directive>, + <directive module="prefork">MinSpareServers</directive>, + <directive module="prefork">MaxSpareServers</directive>, and + <directive module="mpm_common">MaxClients</directive> 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 <directive module="mpm_common">MaxClients</directive>, + while sites with limited memory may need to decrease <directive + module="mpm_common">MaxClients</directive> 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 <directive + module="mpm_common">User</directive> and <directive + module="mpm_common">Group</directive> 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><directive module="mpm_common">MaxRequestsPerChild</directive> + controls how frequently the server recycles processes by killing + old ones and launching new ones.</p> +</summary> +<seealso><a href="../bind.html">Setting which addresses and + ports Apache uses</a></seealso> + +<directivesynopsis location="mpm_common"> +<name>CoreDumpDirectory</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>PidFile</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>Listen</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>ListenBacklog</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>LockFile</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>MaxRequestsPerChild</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>MaxSpareServers</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>MinSpareServers</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>ScoreBoardFile</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>SendBufferSize</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>ServerLimit</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>StartServers</name> +</directivesynopsis> + +<directivesynopsis location="mpm_common"> +<name>User</name> +</directivesynopsis> + +<directivesynopsis> +<name>AcceptMutex</name> +<description>Method that Apache uses to serialize multiple children +accepting requests on network sockets</description> +<syntax>AcceptMutex default|<em>method</em></syntax> +<default>AcceptMutex default</default> +<contextlist><context>server config</context></contextlist> + +<usage> + <p>The <directive>AcceptMutex</directive> 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 <directive module="mpm_common" + >LockFile</directive> directive.</dd> + + <dt><code>fcntl</code></dt> + + <dd>uses the <code>fnctl(2)</code> system call to lock the + file defined by the <directive module="mpm_common" + >LockFile</directive> directive.</dd> + + <dt><code>sysvsem</code></dt> + + <dd>uses SySV-style semaphores to implement the mutex.</dd> + + <dt><code>pthread</code></dt> + + <dd>uses POSIX mutexes as implemented by the POSIX Threads + (PThreads) specification.</dd> + </dl> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>MaxSpareServers</name> +<description>Maximum number of idle child server processes</description> +<syntax>MaxSpareServers <em>number</em><br /></syntax> +<default>MaxSpareServers 10</default> +<contextlist><context>server config</context></contextlist> + +<usage> + <p>The <directive>MaxSpareServers</directive> 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> + + <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> +</usage> +<seealso><directive module="prefork">MinSpareServers</directive></seealso> +<seealso><directive module="mpm_common">StartServers</directive></seealso> +</directivesynopsis> + +<directivesynopsis> +<name>MinSpareServers</name> +<description>Minimum number of idle child server processes</description> +<syntax>MinSpareServers <em>number</em></syntax> +<default>MinSpareServers 5</default> +<contextlist><context>server config</context></contextlist> + +<usage> + <p>The <directive>MinSpareServers</directive> 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> + + <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>This directive has no effect on Microsoft Windows.</p> +</usage> +<seealso><directive module="prefork">MaxSpareServers</directive></seealso> +<seealso><directive module="mpm_common">StartServers</directive></seealso> +</directivesynopsis> + +</modulesynopsis> + |