| <?xml version="1.0"?> | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> | |
| <!-- $LastChangedRevision$ --> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <modulesynopsis metafile="mpm_winnt.xml.meta"> | |
| <name>mpm_winnt</name> | |
| <description>Multi-Processing Module optimized for Windows NT.</description> | |
| <status>MPM</status> | |
| <sourcefile>mpm_winnt.c</sourcefile> | |
| <identifier>mpm_winnt_module</identifier> | |
| <summary> | |
| <p>This Multi-Processing Module (MPM) is the default for the | |
| Windows NT operating systems. It uses a single control process | |
| which launches a single child process which in turn creates | |
| threads to handle requests</p> | |
| <p>Capacity is configured using the | |
| <directive module="mpm_common">ThreadsPerChild</directive> directive, | |
| which sets the maximum number of concurrent client connections.</p> | |
| <p>By default, this MPM uses advanced Windows APIs for accepting | |
| new client connections. In some configurations, third-party products | |
| may interfere with this implementation, with the following messages | |
| written to the web server log:</p> | |
| <example> | |
| Child: Encountered too many AcceptEx faults accepting client connections.<br /> | |
| winnt_mpm: falling back to 'AcceptFilter none'. | |
| </example> | |
| <p>The MPM falls back to a safer implementation, but some client requests | |
| were not processed correctly. In order to avoid this error, use | |
| <directive module="core">AcceptFilter</directive> with accept filter | |
| <code>none</code>.</p> | |
| <highlight language="config"> | |
| AcceptFilter http none | |
| AcceptFilter https none | |
| </highlight> | |
| <p><em>In Apache httpd 2.0 and 2.2, | |
| <directive>Win32DisableAcceptEx</directive> was used for this purpose.</em></p> | |
| <p>The WinNT MPM differs from the Unix MPMs such as worker and event | |
| in several areas:</p> | |
| <ul> | |
| <li>When a child process is exiting due to shutdown, restart, or | |
| <directive module="mpm_common">MaxConnectionsPerChild</directive>, | |
| active requests in the exiting process have | |
| <directive module="core">TimeOut</directive> seconds to finish before | |
| processing is aborted. Alternate types of restart and shutdown are not | |
| implemented.</li> | |
| <li>New child processes read the configuration files instead of | |
| inheriting the configuration from the parent. The behavior will | |
| be the same as on Unix if the child process is created at startup | |
| or restart, but if a child process is created because the prior | |
| one crashed or reached | |
| <directive module="mpm_common">MaxConnectionsPerChild</directive>, | |
| any pending changes to the configuration will become active in the | |
| child at that point, and the parent and child will be using a | |
| different configuration. If planned configuration changes have been | |
| partially implemented and the current configuration cannot be | |
| parsed, the replacement child process cannot start up and the server | |
| will halt. Because of this behavior, configuration files should not | |
| be changed until the time of a server restart.</li> | |
| <li>The <code>monitor</code> and <code>fatal_exception</code> hooks | |
| are not currently implemented.</li> | |
| <li><directive>AcceptFilter</directive> is implemented in the MPM | |
| and has a different type of control over handling of new connections. | |
| (Refer to the <directive module="core">AcceptFilter</directive> | |
| documentation for details.)</li> | |
| </ul> | |
| </summary> | |
| <seealso><a href="../mpm.html">Multi-Processing Modules (MPMs)</a></seealso> | |
| <seealso><a href="../platform/windows.html">Using Apache HTTP Server on Microsoft Windows</a></seealso> | |
| <directivesynopsis location="core"><name>AcceptFilter</name> | |
| </directivesynopsis> | |
| <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>MaxConnectionsPerChild</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>MaxMemFree</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ReceiveBufferSize</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>SendBufferSize</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ThreadLimit</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ThreadsPerChild</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ThreadStackSize</name> | |
| </directivesynopsis> | |
| </modulesynopsis> |