mirror of
https://github.com/apache/httpd.git
synced 2025-08-20 16:09:55 +00:00

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@290723 13f79535-47bb-0310-9956-ffa450edef68
113 lines
4.5 KiB
XML
113 lines
4.5 KiB
XML
<?xml version='1.0' encoding='UTF-8' ?>
|
|
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
|
|
<!-- $LastChangedRevision$ -->
|
|
|
|
<!--
|
|
Copyright 2002-2005 The Apache Software Foundation or its licensors, as
|
|
applicable.
|
|
|
|
Licensed 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.
|
|
-->
|
|
|
|
<manualpage metafile="mpm.xml.meta">
|
|
|
|
<title>Multi-Processing Modules (MPMs)</title>
|
|
|
|
<summary>
|
|
<p>This document describes what a Multi-Processing Module is and
|
|
how they are used by the Apache HTTP Server.</p>
|
|
</summary>
|
|
|
|
<section id="introduction"><title>Introduction</title>
|
|
|
|
<p>The Apache HTTP Server is designed to be a powerful and
|
|
flexible web server that can work on a very wide variety of
|
|
platforms in a range of different environments. Different
|
|
platforms and different environments often require different
|
|
features, or may have different ways of implementing the same
|
|
feature most efficiently. Apache has always accommodated a wide
|
|
variety of environments through its modular design. This design
|
|
allows the webmaster to choose which features will be included
|
|
in the server by selecting which modules to load either at
|
|
compile-time or at run-time.</p>
|
|
|
|
<p>Apache 2.0 extends this modular design to the most basic
|
|
functions of a web server. The server ships with a selection of
|
|
Multi-Processing Modules (MPMs) which are responsible for
|
|
binding to network ports on the machine, accepting requests,
|
|
and dispatching children to handle the requests.</p>
|
|
|
|
<p>Extending the modular design to this level of the server
|
|
allows two important benefits:</p>
|
|
|
|
<ul>
|
|
<li>Apache can more cleanly and efficiently support a wide
|
|
variety of operating systems. In particular, the Windows
|
|
version of Apache is now much more efficient, since
|
|
<module>mpm_winnt</module> can use native
|
|
networking features in place of the POSIX layer used in
|
|
Apache 1.3. This benefit also extends to other operating
|
|
systems that implement specialized MPMs.</li>
|
|
|
|
<li>The server can be better customized for the needs of the
|
|
particular site. For example, sites that need a great deal of
|
|
scalability can choose to use a threaded MPM like
|
|
<module>worker</module> or <module>event</module>, while sites requiring
|
|
stability or compatibility with older software can use a
|
|
<module>prefork</module>.</li>
|
|
</ul>
|
|
|
|
<p>At the user level, MPMs appear much like other Apache
|
|
modules. The main difference is that one and only one MPM must
|
|
be loaded into the server at any time. The list of available
|
|
MPMs appears on the <a href="mod/">module index page</a>.</p>
|
|
|
|
</section>
|
|
|
|
<section id="choosing"><title>Choosing an MPM</title>
|
|
|
|
<p>MPMs must be chosen during configuration, and compiled into
|
|
the server. Compilers are capable of optimizing a lot of
|
|
functions if threads are used, but only if they know that
|
|
threads are being used.</p>
|
|
|
|
<p>To actually choose the desired MPM, use the argument
|
|
<code>--with-mpm=<em>NAME</em></code> with the
|
|
<program>configure</program> script. <em>NAME</em> is the name of the
|
|
desired MPM.</p>
|
|
|
|
<p>Once the server has been compiled, it is possible to
|
|
determine which MPM was chosen by using <code>./httpd
|
|
-l</code>. This command will list every module that is compiled
|
|
into the server, including the MPM.</p>
|
|
</section>
|
|
|
|
<section id="defaults"><title>MPM Defaults</title>
|
|
|
|
<p>The following table lists the default MPMs for various operating
|
|
systems. This will be the MPM selected if you do not make another
|
|
choice at compile-time.</p>
|
|
|
|
<table>
|
|
<columnspec><column width=".2"/><column width=".2"/></columnspec>
|
|
<tr><td>BeOS</td><td><module>beos</module></td></tr>
|
|
<tr><td>Netware</td><td><module>mpm_netware</module></td></tr>
|
|
<tr><td>OS/2</td><td><module>mpmt_os2</module></td></tr>
|
|
<tr><td>Unix</td><td><module>prefork</module></td></tr>
|
|
<tr><td>Windows</td><td><module>mpm_winnt</module></td></tr>
|
|
</table>
|
|
</section>
|
|
|
|
</manualpage>
|