diff options
author | Joshua Slive <slive@apache.org> | 2002-02-26 20:00:40 +0100 |
---|---|---|
committer | Joshua Slive <slive@apache.org> | 2002-02-26 20:00:40 +0100 |
commit | 5fe0caf22ae8c6201cf06ff414b1bdd35d1af07e (patch) | |
tree | 616791ce9c912820f7efffc494c7bf1cb7ab075a /docs/manual | |
parent | Changes necessary to document MPMs. (diff) | |
download | apache2-5fe0caf22ae8c6201cf06ff414b1bdd35d1af07e.tar.xz apache2-5fe0caf22ae8c6201cf06ff414b1bdd35d1af07e.zip |
Start converting the mpm documentation.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93579 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'docs/manual')
-rw-r--r-- | docs/manual/mod/mpm_common.xml | 613 | ||||
-rw-r--r-- | docs/manual/mod/prefork.xml | 207 |
2 files changed, 820 insertions, 0 deletions
diff --git a/docs/manual/mod/mpm_common.xml b/docs/manual/mod/mpm_common.xml new file mode 100644 index 0000000000..3e3e4b7a5f --- /dev/null +++ b/docs/manual/mod/mpm_common.xml @@ -0,0 +1,613 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="../style/manual.xsl"?> +<modulesynopsis> + +<name>mpm_common</name> +<description>A collection of directives that are implemented by +more than one multi-processing module (MPM)</description> +<status>MPM</status> + +<directivesynopsis> +<name>CoreDumpDirectory</name> +<description>Sets the directory where Apache attempts to +switch before dumping core</description> +<syntax>CoreDumpDirectory <em>directory</em></syntax> +<default>CoreDumpDirectory <em>ServerRoot</em></default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module><module>mpm_winnt</module> +</modulelist> + +<usage> + + <p>This controls the directory to which Apache attempts to + switch before dumping core. The default is in the + <directive module="core">ServerRoot</directive> directory, however + since this should not be writable by the user the server runs + as, core dumps won't normally get written. If you want a core + dump for debugging, you can use this directive to place it in a + different location.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>Group</name> +<description>Sets the group under which the server will answer +requests</description> +<syntax>Group <em>unix-group</em></syntax> +<default>Group #-1</default> +<contextlist><context>server config</context><context>virtual host</context> +</contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module></modulelist> + +<usage> + <p>The <directive>Group</directive> directive sets the group under + which the server will answer requests. In order to use this + directive, the stand-alone server must be run initially as root. + <em>Unix-group</em> is one of:</p> + + <dl> + <dt>A group name</dt> + + <dd>Refers to the given group by name.</dd> + + <dt># followed by a group number.</dt> + + <dd>Refers to a group by its number.</dd> + </dl> + <p>It is recommended that you set up a new group specifically for + running the server. Some admins use user <code>nobody</code>, + but this is not always possible or desirable.</p> + + <p>Note: if you start the server as a non-root user, it will + fail to change to the specified group, and will instead + continue to run as the group of the original user.</p> + + <p>Special note: Use of this directive in <VirtualHost< is + no longer supported. To implement the <a + href="../suexec.html">suEXEC wrapper</a> with Apache 2.0, use the + <directive module="mod_suexec">SuexecUserGroup</directive> + directive. SECURITY: See <directive + module="mpm_common">User</directive> for a discussion of the + security considerations.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>PidFile</name> +<description>Sets the file where the server records the process ID +of the daemon</description> +<syntax>PidFile <em>filename</em></syntax> +<default>PidFile logs/httpd.pid</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchilde</module> +<module>prefork</module><module>mpm_winnt</module> +</modulelist> + +<usage> + <p>The <directive>PidFile</directive> directive sets the file to + which the server records the process id of the daemon. If the + filename does not begin with a slash (/) then it is assumed to be + relative to the <directive module="core">ServerRoot</directive>.</p> + + <p>It is often useful to be able to send the server a signal, + so that it closes and then reopens its <directive + module="core">ErrorLog</directive> and TransferLog, and + re-reads its configuration files. This is done by sending a + SIGHUP (kill -1) signal to the process id listed in the + PidFile.</p> + + <p>The PidFile is subject to the same warnings about log file + placement and <a + href="../misc/security_tips.html#serverroot">security</a>.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>Listen</name> +<description>Sets the IP addresses and ports that the server +listens to</description> +<syntax>Listen [<em>IP-address</em>:]<em>portnumber</em></syntax> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module><module>mpm_winnt</module> +</modulelist> + +<usage> + <p>The <directive>Listen</directive> directive instructs Apache to + listen to only specific IP addresses or ports; by default it + responds to requests on all IP interfaces. The Listen directive is + now a required directive. If it is not in the config file, the + server will fail to start. This is a change from previous versions + of Apache.</p> + + <p>The Listen directive tells the server to accept incoming + requests on the specified port or address-and-port combination. + If only a port number is specified, the server listens to the + given port on all interfaces. If an IP address is given as well + as a port, the server will listen on the given port and + interface.</p> + + <p>Multiple Listen directives may be used to specify a number + of addresses and ports to listen to. The server will respond to + requests from any of the listed addresses and ports.</p> + + <p>For example, to make the server accept connections on both + port 80 and port 8000, use:</p> +<example> + Listen 80<br /> + Listen 8000 +</example> + To make the server accept connections on two specified + interfaces and port numbers, use +<example> + Listen 192.170.2.1:80<br /> + Listen 192.170.2.5:8000 +</example> + IPv6 addresses must be surrounded in square brackets, as in the + following example: +<example> + Listen [fe80::a00:20ff:fea7:ccea]:80 +</example> +</usage> + +<seealso><a href="../dns-caveats.html">DNS Issues</a></seealso> +<seealso><a href="../bind.html">Setting + which addresses and ports Apache uses</a></seealso> +</directivesynopsis> + +<directivesynopsis> +<name>ListenBackLog</name> +<description>Maximum length of the queue of pending connections</description> +<syntax>ListenBacklog <em>backlog</em></syntax> +<default>ListenBacklog 511</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module><module>mpm_winnt</module> +</modulelist> + +<usage> + <p>The maximum length of the queue of pending connections. + Generally no tuning is needed or desired, however on some + systems it is desirable to increase this when under a TCP SYN + flood attack. See the backlog parameter to the + <code>listen(2)</code> system call.</p> + + <p>This will often be limited to a smaller number by the + operating system. This varies from OS to OS. Also note that + many OSes do not use exactly what is specified as the backlog, + but use a number based on (but normally larger than) what is + set.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>LockFile</name> +<description>Location of the accept serialization lock file</description> +<syntax>LockFile <em>filename</em></syntax> +<default>LockFile logs/accept.lock</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module></modulelist> + +<usage> + <p>The <directive>LockFile</directive> directive sets the path to + the lockfile used when Apache is compiled with either + USE_FCNTL_SERIALIZED_ACCEPT or USE_FLOCK_SERIALIZED_ACCEPT. This + directive should normally be left at its default value. The main + reason for changing it is if the <code>logs</code> directory is + NFS mounted, since <strong>the lockfile must be stored on a local + disk</strong>. The PID of the main server process is + automatically appended to the filename.</p> + + <p><strong>SECURITY:</strong> It is best to avoid putting this + file in a world writable directory such as + <code>/var/tmp</code> because someone could create a denial of + service attack and prevent the server from starting by creating + a lockfile with the same name as the one the server will try to + create.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>MaxClients</name> +<description>Maximum number of child processes that will be created +to serve requests</description> +<syntax>MaxClients <em>number</em></syntax> +<default>>MaxClients + 8 (with threads) MaxClients 256</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>prefork</module> +</modulelist> + +<usage> + <p>The <directive>MaxClients</directive> directive sets the limit + on the number of child processes that will be created to serve + requests. When the server is built without threading, no more than + this number of clients can be served simultaneously. To configure + more than 256 clients with the prefork MPM, you must use the + <directive module="mpm_common">ServerLimit</directive> directive. + To configure more than 1024 clients with the worker MPM, you must + use the <directive module="mpm_common">ServerLimit</directive> and + <directive module="mpm_common">ThreadLimit</directive> directives.</p> + + <p>Any connection attempts over the + <directive>MaxClients</directive> limit will normally be queued, + up to a number based on the <directive module="mpm_common" + >ListenBacklog</directive> directive. Once a child + process is freed at the end of a different request, the connection + will then be serviced.</p> + + <p>When the server is compiled with threading, then the maximum + number of simultaneous requests that can be served is obtained + from the value of this directive multiplied by + <directive module="mpm_common">ThreadsPerChild</directive>.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>MaxRequestPerChild</name> +<description>Limit on the number of requests that an individual child server +will handle during its life</description> +<syntax>MaxRequestsPerChild <em>number</em></syntax> +<default>MaxRequestsPerChild 10000</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module><module>mpm_winnt</module> +</modulelist> + +<usage> + <p>The <directive>MaxRequestsPerChild</directive> directive sets + the limit on the number of requests that an individual child + server process will handle. After + <directive>MaxRequestsPerChild</directive> requests, the child + process will die. If <directive>MaxRequestsPerChild</directive> is + 0, then the process will never expire.</p> + + <p>Setting <directive>MaxRequestsPerChild</directive> to a + non-zero limit has two beneficial effects:</p> + + <ul> + <li>it limits the amount of memory that process can consume + by (accidental) memory leakage;</li> + + <li>by giving processes a finite lifetime, it helps reduce + the number of processes when the server load reduces.</li> + </ul> + + <p><strong>NOTE:</strong> For <em>KeepAlive</em> requests, only + the first request is counted towards this limit. In effect, it + changes the behavior to limit the number of + <em>connections</em> per child.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>MaxSpareThreads</name> +<description>Maximum number of idle threads</description> +<syntax>MaxSpareThreads <em>number</em></syntax> +<default>MaxSpareThreads 10 (Perchild) or 500 (worker)</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +</modulelist> + +<usage> + <p>Maximum number of idle threads. Different MPMs deal with this + directive differently. <module>perchild</module> monitors the + number of idle threads on a per-child basis. If there are too many + idle threads in that child, the server will begin to kill threads + within that child.</p> + + <p><module>worker</module> deals with idle threads on a + server-wide basis. If there are too many idle threads in the + server then child processes are killed until the number of idle + threads is less than this number.</p> + +</usage> +<seealso><directive module="mpm_common">MinSpareThreads</directive></seealso> +<seealso><directive module="mpm_common">StartServers</directive></seealso> +</directivesynopsis> + +<directivesynopsis> +<name>MaxThreadsPerChild</name> +<description>Maximum number of threads per child process</description> +<syntax>MaxThreadsPerChild <em>number</em></syntax> +<default>MaxThreadsPerChild 64</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +</modulelist> + +<usage> + <p>Maximum number of threads per child. For MPMs with a + variable number of threads per child, this directive sets the + maximum number of threads that will be created in each child + process. To increase this value beyond its default, it is + necessary to change the value of the compile-time define + <code>HARD_THREAD_LIMIT</code> and recompile the server.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>MinSpareThreads</name> +<description>Minimum number of idle threads available to handle request +spikes</description> +<syntax>MinSpareServers <em>number</em></syntax> +<default>MinSpareThreads 5 (Perchild) or 250 (worker)</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +</modulelist> + +<usage> + <p>Minimum number of idle threads to handle request spikes. + Different MPMs deal with this directive + differently. <module>perchild</module> monitors the number of idle + threads on a per-child basis. If there aren't enough idle threads + in that child, the server will begin to create new threads within + that child.</p> + + <p><module>worker</module> deals with idle threads on a + server-wide basis. If there aren't enough idle threads in the + server then child processes are created until the number of idle + threads is greater than number.</p> +</usage> +<seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso> +<seealso><directive module="mpm_common">StartServers</directive></seealso> +</directivesynopsis> + +<directivesynopsis> +<name>NumServers</name> +<description>Total number of children alive at the same time</description> +<syntax>NumServers <em>number</em></syntax> +<default>NumServers 2</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>perchild</module></modulelist> + +<usage> + <p>Number of children alive at the same time. MPMs that use + this directive do not dynamically create new child processes so + this number should be large enough to handle the requests for + the entire site.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>ScoreBoardFile</name> +<description>Location of the file used to store coordination data for +the child processes</description> +<syntax>ScoreBoardFile <em>file-path</em></syntax> +<default>ScoreBoardFile logs/apache_status</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module></modulelist> + +<usage> + <p>The <directive>ScoreBoardFile</directive> directive is required + on some architectures to place a file that the server will use to + communicate between its children and the parent. The easiest way + to find out if your architecture requires a scoreboard file is to + run Apache and see if it creates the file named by the + directive. If your architecture requires it then you must ensure + that this file is not used at the same time by more than one + invocation of Apache.</p> + + <p>If you have to use a <directive>ScoreBoardFile</directive> then + you may see improved speed by placing it on a RAM disk. But be + careful that you heed the same warnings about log file placement + and <a href="../misc/security_tips.html">security</a>.</p> +</usage> +<seealso><a + href="../stopping.html">Stopping and Restarting Apache</a></seealso> +</directivesynopsis> + +<directivesynopsis> +<name>SendBufferSize</name> +<description>TCP buffer size</description> +<syntax>SendBufferSize <em>bytes</em></syntax> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module><module>mpm_winnt</module> +</modulelist> + +<usage> + <p>The server will set the TCP buffer size to the number of bytes + specified. Very useful to increase past standard OS defaults on + high speed high latency (<em>i.e.</em>, 100ms or so, such as + transcontinental fast pipes).</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>ServerLimit</name> +<description>Upper limit on configurable number of processes</description> +<syntax>ServerLimit <em>number</em></syntax> +<default>ServerLimit 256 (prefork), ServerLimit 16 (worker)</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>prefork</module> +</modulelist> + +<usage> + <p>For the <module>prefork</module> MPM, this directive sets the + maximum configured value for <directive + module="mpm_common">MaxClients</directive> for the lifetime of the + Apache process. For the worker MPM, this directive in combination + with <directive module="mpm_common">ThreadLimit</directive> sets + the maximum configured value for <directive + module="mpm_common">MaxClients</directive> for the lifetime of the + Apache process. Any attempts to change this directive during a + restart will be ignored, but <directive + module="mpm_common">MaxClients</directive> can be modified during + a restart.</p> + + <p>Special care must be taken when using this directive. If + <directive>ServerLimit</directive> is set to a value much higher + than necessary, extra, unused shared memory will be allocated. If + both <directive>ServerLimit</directive> and <directive + module="mpm_common">MaxClients</directive> are set to values + higher than the system can handle, Apache may not start or the + system may become unstable.</p> + + <p>With the <module>prefork</module> MPM, use this directive only + if you need to set <directive + module="mpm_common">MaxClients</directive> higher higher than 256. + Do not set the value of this directive any higher than what you + might want to set <directive + module="mpm_common">MaxClients</directive> to.</p> + + <p>With the <module>worker</module> MPM, use this directive only + if your <directive module="mpm_common">MaxClients</directive> and + <directive module="mpm_common">ThreadsPerChild</directive> + settings require more than 16 server processes. Do not set the + value of this directive any higher than the number of server + processes required by what you may want for <directive + module="mpm_common">MaxClients </directive> and <directive + module="mpm_common">ThreadsPerChild</directive>.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>StartServers</name> +<description>Number of child server processes created at startup</description> +<syntax>StartServers <em>number</em></syntax> +<default>StartServers 5</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module></modulelist> + +<usage> + <p>The <directive>StartServers</directive> directive sets the + number of child server processes created on startup. As the number + of processes is dynamically controlled depending on the load, + there is usually little reason to adjust this parameter.</p> +</usage> +<seealso><directive module="mpm_common">MinSpareThreads</directive></seealso> +<seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso> +</directivesynopsis> + +<directivesynopsis> +<name>StartThreads</name> +<description>Nubmer of threads each child creates on startup</description> +<syntax>StartThreads <em>number</em></syntax> +<default>StartThreads 5</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>perchild</module></modulelist> + +<usage> + <p>Number of threads each child creates on startup. As the + number of threads is dynamically controlled depending on the + load, there is usually little reason to adjust this + parameter.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>ThreadLimit</name> +<description>Sets the upper limit on the configurable number of threads +per child process</description> +<syntax>ThreadLimit <em>number</em></syntax> +<default>ThreadLimit 64</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module></modulelist> + +<usage> + <p>This directive sets the maximum configured value for <directive + module="mpm_common">ThreadsPerChild</directive> for the lifetime + of the Apache process. Any attempts to change this directive + during a restart will be ignored, but <directive + module="mpm_common">ThreadsPerChild</directive> can be modified + during a restart up to the value of this directive.</p> + + <p>Special care must be taken when using this directive. If + <directive>ThreadLimit</directive> is set to a value much higher + than <directive module="mpm_common">ThreadsPerChild</directive>, + extra unused shared memory will be allocated. If both + <directive>ThreadLimit</directive> and <directive + module="mpm_common">ThreadsPerChild</directive> are set to values + higher than the system can handle, Apache may not start or the + system may become unstable.</p> + + <p>Use this directive only if you need to set <directive + module="mpm_common">ThreadsPerChild</directive> higher than 64. Do + not set the value of this directive any higher than what you might + want to set <directive + module="mpm_common">ThreadsPerChild</directive> to.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>ThreadsPerChild</name> +<description>Number of threads created by each child process</description> +<syntax>ThreadsPerChild <em>number</em></syntax> +<default>ThreadsPerChild 50</default> +<contextlist><context>server config</context></contextlist> +<modulelist><module>worker</module><module>mpm_winnt</module> +</modulelist> + +<usage> + <p>This directive sets the number of threads created by each + child process. The child creates these threads at startup and + never creates more. if using an MPM like mpmt_winnt, where + there is only one child process, this number should be high + enough to handle the entire load of the server. If using an MPM + like worker, where there are multiple child processes, the + total number of threads should be high enough to handle the + common load on the server.</p> +</usage> +</directivesynopsis> + +<directivesynopsis> +<name>User</name> +<description>The userid under which the server will answer +requests</description> +<syntax>User <em>unix-userid</em></syntax> +<default>User #-1</default> +<contextlist><context>server config</context><context>virtual host</context> +</contextlist> +<modulelist><module>worker</module><module>perchild</module> +<module>prefork</module></modulelist> + +<usage> + <p>The <directive>User</directive> directive sets the userid as + which the server will answer requests. In order to use this + directive, the standalone server must be run initially as + root. <em>Unix-userid</em> is one of:</p> + + <dl> + <dt>A username</dt> + + <dd>Refers to the given user by name.</dd> + + <dt># followed by a user number.</dt> + + <dd>Refers to a user by their number.</dd> + </dl> + + <p>The user should have no privileges which result in it being + able to access files which are not intended to be visible to the + outside world, and similarly, the user should not be able to + execute code which is not meant for httpd requests. It is + recommended that you set up a new user and group specifically for + running the server. Some admins use user <code>nobody</code>, but + this is not always possible or desirable. For example + <module>mod_proxy</module>'s cache, when enabled, must be + accessible to this user (see <directive + module="mod_proxy">CacheRoot</directive>).</p> + + <p>Notes: If you start the server as a non-root user, it will + fail to change to the lesser privileged user, and will instead + continue to run as that original user. If you do start the + server as root, then it is normal for the parent process to + remain running as root.</p> + + <p>Special note: Use of this directive in <directive module="core" + type="section">VirtualHost</directive> is no longer supported. To + configure your server for <a href="mod_suexec.html">suexec</a> use + <directive module="mod_suexec">SuexecUserGroup</directive>.</p> + +<note><title>Security</title> <p>Don't set <directive>User</directive> +(or <directive module="mpm_common">Group</directive>) to +<code>root</code> unless you know exactly what you are doing, and what +the dangers are.</p></note> +</usage> +</directivesynopsis> + +</modulesynopsis>
\ No newline at end of file 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> + |