summaryrefslogtreecommitdiffstats
path: root/docs/manual/mod/prefork.xml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/manual/mod/prefork.xml')
-rw-r--r--docs/manual/mod/prefork.xml207
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>
+