1<?xml version="1.0" encoding="ISO-8859-1"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!-- 4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 This file is generated from xml source: DO NOT EDIT 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 --> 8<title>mpm_common - Apache HTTP Server</title> 9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" /> 12<script src="/style/scripts/prettify.min.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body> 17<div id="page-header"> 18<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p> 19<p class="apache">Apache HTTP Server Version 2.4</p> 20<img alt="" src="/images/feather.gif" /></div> 21<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 22<div id="path"> 23<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">Modules</a></div> 24<div id="page-content"> 25<div id="preamble"><h1>Apache MPM Common Directives</h1> 26<div class="toplang"> 27<p><span>Available Languages: </span><a href="/de/mod/mpm_common.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> | 28<a href="/en/mod/mpm_common.html" title="English"> en </a> | 29<a href="/fr/mod/mpm_common.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> | 30<a href="/ja/mod/mpm_common.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 31<a href="/tr/mod/mpm_common.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a></p> 32</div> 33<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>A collection of directives that are implemented by 34more than one multi-processing module (MPM)</td></tr> 35<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr></table> 36</div> 37<div id="quickview"><h3 class="directives">Directives</h3> 38<ul id="toc"> 39<li><img alt="" src="/images/down.gif" /> <a href="#coredumpdirectory">CoreDumpDirectory</a></li> 40<li><img alt="" src="/images/down.gif" /> <a href="#enableexceptionhook">EnableExceptionHook</a></li> 41<li><img alt="" src="/images/down.gif" /> <a href="#gracefulshutdowntimeout">GracefulShutdownTimeout</a></li> 42<li><img alt="" src="/images/down.gif" /> <a href="#listen">Listen</a></li> 43<li><img alt="" src="/images/down.gif" /> <a href="#listenbacklog">ListenBackLog</a></li> 44<li><img alt="" src="/images/down.gif" /> <a href="#maxconnectionsperchild">MaxConnectionsPerChild</a></li> 45<li><img alt="" src="/images/down.gif" /> <a href="#maxmemfree">MaxMemFree</a></li> 46<li><img alt="" src="/images/down.gif" /> <a href="#maxrequestworkers">MaxRequestWorkers</a></li> 47<li><img alt="" src="/images/down.gif" /> <a href="#maxsparethreads">MaxSpareThreads</a></li> 48<li><img alt="" src="/images/down.gif" /> <a href="#minsparethreads">MinSpareThreads</a></li> 49<li><img alt="" src="/images/down.gif" /> <a href="#pidfile">PidFile</a></li> 50<li><img alt="" src="/images/down.gif" /> <a href="#receivebuffersize">ReceiveBufferSize</a></li> 51<li><img alt="" src="/images/down.gif" /> <a href="#scoreboardfile">ScoreBoardFile</a></li> 52<li><img alt="" src="/images/down.gif" /> <a href="#sendbuffersize">SendBufferSize</a></li> 53<li><img alt="" src="/images/down.gif" /> <a href="#serverlimit">ServerLimit</a></li> 54<li><img alt="" src="/images/down.gif" /> <a href="#startservers">StartServers</a></li> 55<li><img alt="" src="/images/down.gif" /> <a href="#startthreads">StartThreads</a></li> 56<li><img alt="" src="/images/down.gif" /> <a href="#threadlimit">ThreadLimit</a></li> 57<li><img alt="" src="/images/down.gif" /> <a href="#threadsperchild">ThreadsPerChild</a></li> 58<li><img alt="" src="/images/down.gif" /> <a href="#threadstacksize">ThreadStackSize</a></li> 59</ul> 60<ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 61 62<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 63<div class="directive-section"><h2><a name="CoreDumpDirectory" id="CoreDumpDirectory">CoreDumpDirectory</a> <a name="coredumpdirectory" id="coredumpdirectory">Directive</a></h2> 64<table class="directive"> 65<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory where Apache HTTP Server attempts to 66switch before dumping core</td></tr> 67<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CoreDumpDirectory <var>directory</var></code></td></tr> 68<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for the default setting</code></td></tr> 69<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 70<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 71<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 72</table> 73 <p>This controls the directory to which Apache httpd attempts to 74 switch before dumping core. If your operating system is configured to 75 create core files in the working directory of the crashing process, 76 <code class="directive">CoreDumpDirectory</code> is necessary to change working 77 directory from the default <code class="directive"><a href="/mod/core.html#serverroot">ServerRoot</a></code> 78 directory, which should not be writable by the user the server runs as.</p> 79 80 <p>If you want a core dump for debugging, you can use this directive to 81 place it in a different location. This directive has no effect if your 82 operating system is not configured to write core files to the working directory 83 of the crashing processes.</p> 84 85 <div class="note"><h3>Core Dumps on Linux</h3> 86 <p>If Apache httpd starts as root and switches to another user, the 87 Linux kernel <em>disables</em> core dumps even if the directory is 88 writable for the process. Apache httpd (2.0.46 and later) reenables core dumps 89 on Linux 2.4 and beyond, but only if you explicitly configure a <code class="directive">CoreDumpDirectory</code>.</p> 90 </div> 91 92 <div class="note"> 93 <h3>Core Dumps on BSD</h3> 94 <p>To enable core-dumping of suid-executables on BSD-systems (such 95 as FreeBSD), set <code>kern.sugid_coredump</code> to 1. 96 </p> 97 </div> 98 99 <div class="note"><h3>Specific signals</h3> 100 <p><code class="directive">CoreDumpDirectory</code> processing only occurs for 101 a select set of fatal signals: SIGFPE, SIGILL, SIGABORT, 102 SIGSEGV, and SIGBUS.</p> 103 <p>On some operating systems, SIGQUIT also results in a core dump but 104 does not go through <code class="directive">CoreDumpDirectory</code> or 105 <code class="directive">EnableExceptionHook</code> processing, so the core 106 location is dictated entirely by the operating system.</p> 107 </div> 108 109 110</div> 111<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 112<div class="directive-section"><h2><a name="EnableExceptionHook" id="EnableExceptionHook">EnableExceptionHook</a> <a name="enableexceptionhook" id="enableexceptionhook">Directive</a></h2> 113<table class="directive"> 114<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables a hook that runs exception handlers 115after a crash</td></tr> 116<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>EnableExceptionHook On|Off</code></td></tr> 117<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>EnableExceptionHook Off</code></td></tr> 118<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 119<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 120<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 121</table> 122 <p>For safety reasons this directive is only available if the server was 123 configured with the <code>--enable-exception-hook</code> option. It 124 enables a hook that allows external modules to plug in and do something 125 after a child crashed.</p> 126 127 <p>There are already two modules, <code>mod_whatkilledus</code> and 128 <code>mod_backtrace</code> that make use of this hook. Please have a 129 look at Jeff Trawick's <a href="http://people.apache.org/~trawick/exception_hook.html">EnableExceptionHook site</a> for more information about these.</p> 130 131</div> 132<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 133<div class="directive-section"><h2><a name="GracefulShutdownTimeout" id="GracefulShutdownTimeout">GracefulShutdownTimeout</a> <a name="gracefulshutdowntimeout" id="gracefulshutdowntimeout">Directive</a></h2> 134<table class="directive"> 135<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Specify a timeout after which a gracefully shutdown server 136will exit.</td></tr> 137<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>GracefulShutDownTimeout <var>seconds</var></code></td></tr> 138<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>GracefulShutDownTimeout 0</code></td></tr> 139<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 140<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 141<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code>, <code class="module"><a href="/mod/event.html">event</a></code></td></tr> 142<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.2 and later</td></tr> 143</table> 144 <p>The <code class="directive">GracefulShutdownTimeout</code> specifies 145 how many seconds after receiving a "graceful-stop" signal, a 146 server should continue to run, handling the existing connections.</p> 147 148 <p>Setting this value to zero means that the server will wait 149 indefinitely until all remaining requests have been fully served.</p> 150 151</div> 152<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 153<div class="directive-section"><h2><a name="Listen" id="Listen">Listen</a> <a name="listen" id="listen">Directive</a></h2> 154<table class="directive"> 155<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>IP addresses and ports that the server 156listens to</td></tr> 157<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Listen [<var>IP-address</var>:]<var>portnumber</var> [<var>protocol</var>]</code></td></tr> 158<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 159<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 160<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code>, <code class="module"><a href="/mod/event.html">event</a></code></td></tr> 161<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <var>protocol</var> argument was added in 2.1.5</td></tr> 162</table> 163 <p>The <code class="directive">Listen</code> directive instructs Apache httpd to 164 listen to only specific IP addresses or ports; by default it 165 responds to requests on all IP interfaces. <code class="directive">Listen</code> 166 is now a required directive. If it is not in the config file, the 167 server will fail to start. This is a change from previous versions 168 of Apache httpd.</p> 169 170 <p>The <code class="directive">Listen</code> directive tells the server to 171 accept incoming requests on the specified port or address-and-port 172 combination. If only a port number is specified, the server listens to 173 the given port on all interfaces. If an IP address is given as well 174 as a port, the server will listen on the given port and 175 interface.</p> 176 177 <p>Multiple <code class="directive">Listen</code> directives may be used to 178 specify a number of addresses and ports to listen to. The server will 179 respond to requests from any of the listed addresses and ports.</p> 180 181 <p>For example, to make the server accept connections on both 182 port 80 and port 8000, use:</p> 183 184 <pre class="prettyprint lang-config">Listen 80 185Listen 8000</pre> 186 187 188 <p>To make the server accept connections on two specified 189 interfaces and port numbers, use </p> 190 191 <pre class="prettyprint lang-config">Listen 192.170.2.1:80 192Listen 192.170.2.5:8000</pre> 193 194 195 <p>IPv6 addresses must be surrounded in square brackets, as in the 196 following example:</p> 197 198 <pre class="prettyprint lang-config">Listen [2001:db8::a00:20ff:fea7:ccea]:80</pre> 199 200 201 <p>The optional <var>protocol</var> argument is not required for most 202 configurations. If not specified, <code>https</code> is the default for 203 port 443 and <code>http</code> the default for all other ports. The 204 protocol is used to determine which module should handle a request, and 205 to apply protocol specific optimizations with the 206 <code class="directive"><a href="/mod/core.html#acceptfilter">AcceptFilter</a></code> directive.</p> 207 208 <p>You only need to set the protocol if you are running on non-standard 209 ports. For example, running an <code>https</code> site on port 8443:</p> 210 211 <pre class="prettyprint lang-config">Listen 192.170.2.1:8443 https</pre> 212 213 214 <div class="note"><h3>Error condition</h3> 215 Multiple <code class="directive">Listen</code> directives for the same ip 216 address and port will result in an <code>Address already in use</code> 217 error message. 218 </div> 219 220 221<h3>See also</h3> 222<ul> 223<li><a href="/dns-caveats.html">DNS Issues</a></li> 224<li><a href="/bind.html">Setting which addresses and ports Apache HTTP Server 225 uses</a></li> 226<li><a href="http://wiki.apache.org/httpd/CouldNotBindToAddress">Further 227discussion of the <code>Address already in use</code> error message, 228including other causes.</a></li> 229</ul> 230</div> 231<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 232<div class="directive-section"><h2><a name="ListenBackLog" id="ListenBackLog">ListenBackLog</a> <a name="listenbacklog" id="listenbacklog">Directive</a></h2> 233<table class="directive"> 234<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum length of the queue of pending connections</td></tr> 235<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ListenBacklog <var>backlog</var></code></td></tr> 236<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ListenBacklog 511</code></td></tr> 237<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 238<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 239<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 240</table> 241 <p>The maximum length of the queue of pending connections. 242 Generally no tuning is needed or desired, however on some 243 systems it is desirable to increase this when under a TCP SYN 244 flood attack. See the backlog parameter to the 245 <code>listen(2)</code> system call.</p> 246 247 <p>This will often be limited to a smaller number by the 248 operating system. This varies from OS to OS. Also note that 249 many OSes do not use exactly what is specified as the backlog, 250 but use a number based on (but normally larger than) what is 251 set.</p> 252 253</div> 254<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 255<div class="directive-section"><h2><a name="MaxConnectionsPerChild" id="MaxConnectionsPerChild">MaxConnectionsPerChild</a> <a name="maxconnectionsperchild" id="maxconnectionsperchild">Directive</a></h2> 256<table class="directive"> 257<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Limit on the number of connections that an individual child server 258will handle during its life</td></tr> 259<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxConnectionsPerChild <var>number</var></code></td></tr> 260<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxConnectionsPerChild 0</code></td></tr> 261<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 262<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 263<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 264<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available Apache HTTP Server 2.3.9 and later. The old name 265<code>MaxRequestsPerChild</code> is still supported.</td></tr> 266</table> 267 <p>The <code class="directive">MaxConnectionsPerChild</code> directive sets 268 the limit on the number of connections that an individual child 269 server process will handle. After 270 <code class="directive">MaxConnectionsPerChild</code> connections, the child 271 process will die. If <code class="directive">MaxConnectionsPerChild</code> is 272 <code>0</code>, then the process will never expire.</p> 273 274 <p>Setting <code class="directive">MaxConnectionsPerChild</code> to a 275 non-zero value limits the amount of memory that process can consume 276 by (accidental) memory leakage.</p> 277 278</div> 279<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 280<div class="directive-section"><h2><a name="MaxMemFree" id="MaxMemFree">MaxMemFree</a> <a name="maxmemfree" id="maxmemfree">Directive</a></h2> 281<table class="directive"> 282<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum amount of memory that the main allocator is allowed 283to hold without calling <code>free()</code></td></tr> 284<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxMemFree <var>KBytes</var></code></td></tr> 285<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxMemFree 2048</code></td></tr> 286<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 287<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 288<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code></td></tr> 289</table> 290 <p>The <code class="directive">MaxMemFree</code> directive sets the 291 maximum number of free Kbytes that every allocator is allowed 292 to hold without calling <code>free()</code>. In threaded MPMs, every 293 thread has its own allocator. When set 294 to zero, the threshold will be set to unlimited.</p> 295 296</div> 297<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 298<div class="directive-section"><h2><a name="MaxRequestWorkers" id="MaxRequestWorkers">MaxRequestWorkers</a> <a name="maxrequestworkers" id="maxrequestworkers">Directive</a></h2> 299<table class="directive"> 300<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum number of connections that will be processed 301simultaneously</td></tr> 302<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxRequestWorkers <var>number</var></code></td></tr> 303<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 304<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 305<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 306<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 307</table> 308 <p>The <code class="directive">MaxRequestWorkers</code> directive sets the limit 309 on the number of simultaneous requests that will be served. Any 310 connection attempts over the <code class="directive">MaxRequestWorkers</code> 311 limit will normally be queued, up to a number based on the 312 <code class="directive"><a href="#listenbacklog">ListenBacklog</a></code> 313 directive. Once a child process is freed at the end of a different 314 request, the connection will then be serviced.</p> 315 316 <p>For non-threaded servers (<em>i.e.</em>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>), 317 <code class="directive">MaxRequestWorkers</code> translates into the maximum 318 number of child processes that will be launched to serve requests. 319 The default value is <code>256</code>; to increase it, you must also raise 320 <code class="directive"><a href="#serverlimit">ServerLimit</a></code>.</p> 321 322 <p>For threaded and hybrid servers (<em>e.g.</em> <code class="module"><a href="/mod/event.html">event</a></code> 323 or <code class="module"><a href="/mod/worker.html">worker</a></code>) <code class="directive">MaxRequestWorkers</code> restricts 324 the total number of threads that will be available to serve clients. 325 For hybrid MPMs the default value is <code>16</code> (<code class="directive"><a href="#serverlimit">ServerLimit</a></code>) multiplied by the value of 326 <code>25</code> (<code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code>). Therefore, to increase <code class="directive">MaxRequestWorkers</code> to a value that requires more than 16 processes, 327 you must also raise <code class="directive"><a href="#serverlimit">ServerLimit</a></code>.</p> 328 329 <p><code class="directive">MaxRequestWorkers</code> was called 330 <code class="directive">MaxClients</code> before version 2.3.13. The old name is still 331 supported.</p> 332 333</div> 334<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 335<div class="directive-section"><h2><a name="MaxSpareThreads" id="MaxSpareThreads">MaxSpareThreads</a> <a name="maxsparethreads" id="maxsparethreads">Directive</a></h2> 336<table class="directive"> 337<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum number of idle threads</td></tr> 338<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxSpareThreads <var>number</var></code></td></tr> 339<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 340<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 341<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 342<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 343</table> 344 <p>Maximum number of idle threads. Different MPMs deal with this 345 directive differently.</p> 346 347 <p>For <code class="module"><a href="/mod/worker.html">worker</a></code>, the default is 348 <code>MaxSpareThreads 250</code>. This MPM deals with idle threads 349 on a server-wide basis. If there are too many idle threads in the 350 server then child processes are killed until the number of idle 351 threads is less than this number.</p> 352 353 <p>For <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code> the default is 354 <code>MaxSpareThreads 100</code>. Since this MPM runs a 355 single-process, the spare thread count is also server-wide.</p> 356 357 <p><code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code> works 358 similar to <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>. For 359 <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code> the default value is <code>10</code>.</p> 360 361 <div class="note"><h3>Restrictions</h3> 362 <p>The range of the <code class="directive">MaxSpareThreads</code> value 363 is restricted. Apache httpd will correct the given value automatically 364 according to the following rules:</p> 365 <ul> 366 <li><code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code> wants the value to be greater than 367 <code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code>.</li> 368 369 <li>For <code class="module"><a href="/mod/worker.html">worker</a></code>, the value must be greater or equal 370 to the sum of <code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code> 371 and <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code>.</li> 372 </ul> 373 </div> 374 375<h3>See also</h3> 376<ul> 377<li><code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code></li> 378<li><code class="directive"><a href="#startservers">StartServers</a></code></li> 379<li><code class="directive"><a href="/mod/prefork.html#maxspareservers">MaxSpareServers</a></code></li> 380</ul> 381</div> 382<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 383<div class="directive-section"><h2><a name="MinSpareThreads" id="MinSpareThreads">MinSpareThreads</a> <a name="minsparethreads" id="minsparethreads">Directive</a></h2> 384<table class="directive"> 385<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Minimum number of idle threads available to handle request 386spikes</td></tr> 387<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MinSpareThreads <var>number</var></code></td></tr> 388<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 389<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 390<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 391<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 392</table> 393 <p>Minimum number of idle threads to handle request spikes. 394 Different MPMs deal with this directive 395 differently.</p> 396 397 <p><code class="module"><a href="/mod/worker.html">worker</a></code> uses a default of <code>MinSpareThreads 398 75</code> and deals with idle threads on a server-wide basis. If 399 there aren't enough idle threads in the server then child 400 processes are created until the number of idle threads is greater 401 than <var>number</var>.</p> 402 403 <p><code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code> uses a default of 404 <code>MinSpareThreads 10</code> and, since it is a single-process 405 MPM, tracks this on a server-wide bases.</p> 406 407 <p><code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code> works 408 similar to <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>. For 409 <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code> the default value is <code>5</code>.</p> 410 411<h3>See also</h3> 412<ul> 413<li><code class="directive"><a href="#maxsparethreads">MaxSpareThreads</a></code></li> 414<li><code class="directive"><a href="#startservers">StartServers</a></code></li> 415<li><code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code></li> 416</ul> 417</div> 418<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 419<div class="directive-section"><h2><a name="PidFile" id="PidFile">PidFile</a> <a name="pidfile" id="pidfile">Directive</a></h2> 420<table class="directive"> 421<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File where the server records the process ID 422of the daemon</td></tr> 423<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>PidFile <var>filename</var></code></td></tr> 424<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>PidFile logs/httpd.pid</code></td></tr> 425<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 426<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 427<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 428</table> 429 <p>The <code class="directive">PidFile</code> directive sets the file to 430 which the server records the process id of the daemon. If the 431 filename is not absolute then it is assumed to be relative to the 432 <code class="directive"><a href="/mod/core.html#serverroot">ServerRoot</a></code>.</p> 433 434 <div class="example"><h3>Example</h3><pre class="prettyprint lang-config">PidFile /var/run/apache.pid</pre> 435</div> 436 437 <p>It is often useful to be able to send the server a signal, 438 so that it closes and then re-opens its <code class="directive"><a href="/mod/core.html#errorlog">ErrorLog</a></code> and <code class="directive"><a href="/mod/mod_log_config.html#transferlog">TransferLog</a></code>, and 439 re-reads its configuration files. This is done by sending a 440 SIGHUP (kill -1) signal to the process id listed in the 441 <code class="directive">PidFile</code>.</p> 442 443 <p>The <code class="directive">PidFile</code> is subject to the same 444 warnings about log file placement and <a href="/misc/security_tips.html#serverroot">security</a>.</p> 445 446 <div class="note"><h3>Note</h3> 447 <p>As of Apache HTTP Server 2, we recommended that you only use the <code class="program"><a href="/programs/apachectl.html">apachectl</a></code> script, or the init script that your OS provides, 448 for (re-)starting or stopping the server.</p> 449 </div> 450 451</div> 452<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 453<div class="directive-section"><h2><a name="ReceiveBufferSize" id="ReceiveBufferSize">ReceiveBufferSize</a> <a name="receivebuffersize" id="receivebuffersize">Directive</a></h2> 454<table class="directive"> 455<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>TCP receive buffer size</td></tr> 456<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ReceiveBufferSize <var>bytes</var></code></td></tr> 457<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ReceiveBufferSize 0</code></td></tr> 458<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 459<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 460<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 461</table> 462 <p>The server will set the TCP receive buffer size to the number of 463 bytes specified.</p> 464 465 <p>If set to the value of <code>0</code>, the server will use the 466 OS default.</p> 467 468</div> 469<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 470<div class="directive-section"><h2><a name="ScoreBoardFile" id="ScoreBoardFile">ScoreBoardFile</a> <a name="scoreboardfile" id="scoreboardfile">Directive</a></h2> 471<table class="directive"> 472<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Location of the file used to store coordination data for 473the child processes</td></tr> 474<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScoreBoardFile <var>file-path</var></code></td></tr> 475<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ScoreBoardFile logs/apache_runtime_status</code></td></tr> 476<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 477<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 478<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 479</table> 480 <p>Apache HTTP Server uses a scoreboard to communicate between its parent 481 and child processes. Some architectures require a file to facilitate 482 this communication. If the file is left unspecified, Apache httpd first 483 attempts to create the scoreboard entirely in memory (using anonymous 484 shared memory) and, failing that, will attempt to create the file on 485 disk (using file-based shared memory). Specifying this directive causes 486 Apache httpd to always create the file on the disk.</p> 487 488 <div class="example"><h3>Example</h3><pre class="prettyprint lang-config">ScoreBoardFile /var/run/apache_runtime_status</pre> 489</div> 490 491 <p>File-based shared memory is useful for third-party applications 492 that require direct access to the scoreboard.</p> 493 494 <p>If you use a <code class="directive">ScoreBoardFile</code> then 495 you may see improved speed by placing it on a RAM disk. But be 496 careful that you heed the same warnings about log file placement 497 and <a href="/misc/security_tips.html">security</a>.</p> 498 499<h3>See also</h3> 500<ul> 501<li><a href="/stopping.html">Stopping and Restarting 502Apache HTTP Server</a></li> 503</ul> 504</div> 505<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 506<div class="directive-section"><h2><a name="SendBufferSize" id="SendBufferSize">SendBufferSize</a> <a name="sendbuffersize" id="sendbuffersize">Directive</a></h2> 507<table class="directive"> 508<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>TCP buffer size</td></tr> 509<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SendBufferSize <var>bytes</var></code></td></tr> 510<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SendBufferSize 0</code></td></tr> 511<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 512<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 513<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 514</table> 515 <p>Sets the server's TCP send buffer size to the number of bytes 516 specified. It is often useful to set this past the OS's standard 517 default value on high speed, high latency connections 518 (<em>i.e.</em>, 100ms or so, such as transcontinental fast pipes).</p> 519 520 <p>If set to the value of <code>0</code>, the server will use the 521 default value provided by your OS.</p> 522 523 <p>Further configuration of your operating system may be required to elicit 524 better performance on high speed, high latency connections.</p> 525 526 <div class="note"> <p> On some operating systems, changes in TCP behavior resulting 527 from a larger <code class="directive">SendBufferSize</code> may not be seen unless 528 <code class="directive"><a href="/mod/core.html#enablesendfile">EnableSendfile</a></code> is set to OFF. This 529 interaction applies only to static files.</p> </div> 530 531 532</div> 533<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 534<div class="directive-section"><h2><a name="ServerLimit" id="ServerLimit">ServerLimit</a> <a name="serverlimit" id="serverlimit">Directive</a></h2> 535<table class="directive"> 536<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Upper limit on configurable number of processes</td></tr> 537<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ServerLimit <var>number</var></code></td></tr> 538<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 539<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 540<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 541<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 542</table> 543 <p>For the <code class="module"><a href="/mod/prefork.html">prefork</a></code> MPM, this directive sets the 544 maximum configured value for <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> for the lifetime of the 545 Apache httpd process. For the <code class="module"><a href="/mod/worker.html">worker</a></code> MPM, this directive 546 in combination with <code class="directive"><a href="#threadlimit">ThreadLimit</a></code> sets 547 the maximum configured value for <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> for the lifetime of the 548 Apache httpd process. Any attempts to change this directive during a 549 restart will be ignored, but <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> can be modified during 550 a restart.</p> 551 552 <p>Special care must be taken when using this directive. If 553 <code class="directive">ServerLimit</code> is set to a value much higher 554 than necessary, extra, unused shared memory will be allocated. If 555 both <code class="directive">ServerLimit</code> and <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> are set to values 556 higher than the system can handle, Apache httpd may not start or the 557 system may become unstable.</p> 558 559 <p>With the <code class="module"><a href="/mod/prefork.html">prefork</a></code> MPM, use this directive only 560 if you need to set <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> higher than 256 (default). 561 Do not set the value of this directive any higher than what you 562 might want to set <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> to.</p> 563 564 <p>With <code class="module"><a href="/mod/worker.html">worker</a></code>, use this directive only 565 if your <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers</a></code> and 566 <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> 567 settings require more than 16 server processes (default). Do not set 568 the value of this directive any higher than the number of server 569 processes required by what you may want for <code class="directive"><a href="#maxrequestworkers">MaxRequestWorkers </a></code> and <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code>.</p> 570 571 <div class="note"><h3>Note</h3> 572 <p>There is a hard limit of <code>ServerLimit 20000</code> compiled 573 into the server (for the <code class="module"><a href="/mod/prefork.html">prefork</a></code> MPM 200000). This is 574 intended to avoid nasty effects caused by typos. To increase it 575 even further past this limit, you will need to modify the value of 576 MAX_SERVER_LIMIT in the mpm source file and rebuild the server.</p> 577 </div> 578 579<h3>See also</h3> 580<ul> 581<li><a href="/stopping.html">Stopping and Restarting Apache HTTP Server</a></li> 582</ul> 583</div> 584<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 585<div class="directive-section"><h2><a name="StartServers" id="StartServers">StartServers</a> <a name="startservers" id="startservers">Directive</a></h2> 586<table class="directive"> 587<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of child server processes created at startup</td></tr> 588<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>StartServers <var>number</var></code></td></tr> 589<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 590<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 591<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 592<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/prefork.html">prefork</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 593</table> 594 <p>The <code class="directive">StartServers</code> directive sets the 595 number of child server processes created on startup. As the number 596 of processes is dynamically controlled depending on the load, (see 597 <code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code>, 598 <code class="directive"><a href="#maxsparethreads">MaxSpareThreads</a></code>, 599 <code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code>, <code class="directive"><a href="/mod/prefork.html#maxspareservers">MaxSpareServers</a></code>) 600 there is usually little reason to adjust this parameter.</p> 601 602 <p>The default value differs from MPM to MPM. <code class="module"><a href="/mod/worker.html">worker</a></code> 603 defaults to <code>StartServers 3</code>; <code class="module"><a href="/mod/prefork.html">prefork</a></code> 604 defaults to <code>5</code>; <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code> defaults to 605 <code>2</code>.</p> 606 607</div> 608<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 609<div class="directive-section"><h2><a name="StartThreads" id="StartThreads">StartThreads</a> <a name="startthreads" id="startthreads">Directive</a></h2> 610<table class="directive"> 611<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of threads created on startup</td></tr> 612<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>StartThreads <var>number</var></code></td></tr> 613<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 614<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 615<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 616<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code></td></tr> 617</table> 618 <p>Number of threads created on startup. As the 619 number of threads is dynamically controlled depending on the 620 load, (see 621 <code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code>, 622 <code class="directive"><a href="#maxsparethreads">MaxSpareThreads</a></code>, 623 <code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code>, <code class="directive"><a href="/mod/prefork.html#maxspareservers">MaxSpareServers</a></code>) 624 there is usually little reason to adjust this 625 parameter.</p> 626 627 <p>For <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code> the default is 628 <code>StartThreads 50</code> and, since there is only a single 629 process, this is the total number of threads created at startup to 630 serve requests.</p> 631 632</div> 633<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 634<div class="directive-section"><h2><a name="ThreadLimit" id="ThreadLimit">ThreadLimit</a> <a name="threadlimit" id="threadlimit">Directive</a></h2> 635<table class="directive"> 636<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the upper limit on the configurable number of threads 637per child process</td></tr> 638<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ThreadLimit <var>number</var></code></td></tr> 639<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 640<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 641<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 642<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 643</table> 644 <p>This directive sets the maximum configured value for <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> for the lifetime 645 of the Apache httpd process. Any attempts to change this directive 646 during a restart will be ignored, but <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> can be modified 647 during a restart up to the value of this directive.</p> 648 649 <p>Special care must be taken when using this directive. If 650 <code class="directive">ThreadLimit</code> is set to a value much higher 651 than <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code>, 652 extra unused shared memory will be allocated. If both 653 <code class="directive">ThreadLimit</code> and <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> are set to values 654 higher than the system can handle, Apache httpd may not start or the 655 system may become unstable. Do not set the value of this directive 656 any higher than your greatest predicted setting of <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> for the 657 current run of Apache httpd.</p> 658 659 <p>The default value for <code class="directive">ThreadLimit</code> is 660 <code>1920</code> when used with <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code> and 661 <code>64</code> when used with the others.</p> 662 663 <div class="note"><h3>Note</h3> 664 <p>There is a hard limit of <code>ThreadLimit 20000</code> (or 665 <code>ThreadLimit 100000</code> with <code class="module"><a href="/mod/event.html">event</a></code>, 666 <code>ThreadLimit 15000</code> with <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>) 667 compiled into the server. This is intended to avoid nasty effects 668 caused by typos. To increase it even further past this limit, you 669 will need to modify the value of MAX_THREAD_LIMIT in the mpm 670 source file and rebuild the server.</p> 671 </div> 672 673</div> 674<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 675<div class="directive-section"><h2><a name="ThreadsPerChild" id="ThreadsPerChild">ThreadsPerChild</a> <a name="threadsperchild" id="threadsperchild">Directive</a></h2> 676<table class="directive"> 677<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of threads created by each child process</td></tr> 678<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ThreadsPerChild <var>number</var></code></td></tr> 679<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for details</code></td></tr> 680<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 681<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 682<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code></td></tr> 683</table> 684 <p>This directive sets the number of threads created by each 685 child process. The child creates these threads at startup and 686 never creates more. If using an MPM like <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, 687 where there is only one child process, this number should be high 688 enough to handle the entire load of the server. If using an MPM 689 like <code class="module"><a href="/mod/worker.html">worker</a></code>, where there are multiple child processes, 690 the <em>total</em> number of threads should be high enough to handle 691 the common load on the server.</p> 692 693 <p>The default value for <code class="directive">ThreadsPerChild</code> is 694 <code>64</code> when used with <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code> and 695 <code>25</code> when used with the others.</p> 696 697</div> 698<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 699<div class="directive-section"><h2><a name="ThreadStackSize" id="ThreadStackSize">ThreadStackSize</a> <a name="threadstacksize" id="threadstacksize">Directive</a></h2> 700<table class="directive"> 701<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The size in bytes of the stack used by threads handling 702client connections</td></tr> 703<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ThreadStackSize <var>size</var></code></td></tr> 704<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>65536 on NetWare; varies on other operating systems</code></td></tr> 705<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 706<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr> 707<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="/mod/event.html">event</a></code>, <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="/mod/worker.html">worker</a></code>, <code class="module"><a href="/mod/event.html">event</a></code></td></tr> 708<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.1 and later</td></tr> 709</table> 710 <p>The <code class="directive">ThreadStackSize</code> directive sets the 711 size of the stack (for autodata) of threads which handle client 712 connections and call modules to help process those connections. 713 In most cases the operating system default for stack size is 714 reasonable, but there are some conditions where it may need to be 715 adjusted:</p> 716 717 <ul> 718 <li>On platforms with a relatively small default thread stack size 719 (e.g., HP-UX), Apache httpd may crash when using some third-party modules 720 which use a relatively large amount of autodata storage. Those 721 same modules may have worked fine on other platforms where the 722 default thread stack size is larger. This type of crash is 723 resolved by setting <code class="directive">ThreadStackSize</code> to a 724 value higher than the operating system default. This type of 725 adjustment is necessary only if the provider of the third-party 726 module specifies that it is required, or if diagnosis of an Apache httpd 727 crash indicates that the thread stack size was too small.</li> 728 729 <li>On platforms where the default thread stack size is 730 significantly larger than necessary for the web server 731 configuration, a higher number of threads per child process 732 will be achievable if <code class="directive">ThreadStackSize</code> is 733 set to a value lower than the operating system default. This type 734 of adjustment should only be made in a test environment which allows 735 the full set of web server processing can be exercised, as there 736 may be infrequent requests which require more stack to process. 737 The minimum required stack size strongly depends on the modules 738 used, but any change in the web server configuration can invalidate 739 the current <code class="directive">ThreadStackSize</code> setting.</li> 740 741 <li>On Linux, this directive can only be used to increase the default 742 stack size, as the underlying system call uses the value as a 743 <em>minimum</em> stack size. The (often large) soft limit for 744 <code>ulimit -s</code> (8MB if unlimited) is used as the default stack 745 size.</li> 746 </ul> 747 748 <div class="note">It is recommended to not reduce <code class="directive">ThreadStackSize</code> 749 unless a high number of threads per child process is needed. On some 750 platforms (including Linux), a setting of 128000 is already too low and 751 causes crashes with some common modules.</div> 752 753</div> 754</div> 755<div class="bottomlang"> 756<p><span>Available Languages: </span><a href="/de/mod/mpm_common.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> | 757<a href="/en/mod/mpm_common.html" title="English"> en </a> | 758<a href="/fr/mod/mpm_common.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> | 759<a href="/ja/mod/mpm_common.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 760<a href="/tr/mod/mpm_common.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a></p> 761</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div> 762<script type="text/javascript"><!--//--><![CDATA[//><!-- 763var comments_shortname = 'httpd'; 764var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mpm_common.html'; 765(function(w, d) { 766 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 767 d.write('<div id="comments_thread"><\/div>'); 768 var s = d.createElement('script'); 769 s.type = 'text/javascript'; 770 s.async = true; 771 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 772 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 773 } 774 else { 775 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 776 } 777})(window, document); 778//--><!]]></script></div><div id="footer"> 779<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> 780<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- 781if (typeof(prettyPrint) !== 'undefined') { 782 prettyPrint(); 783} 784//--><!]]></script> 785</body></html>