home *** CD-ROM | disk | FTP | other *** search
- <?xml version='1.0' encoding='UTF-8' ?>
- <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
- <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
- <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 using 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>, while sites requiring
- stability or compatibility with older software can use a
- <module>prefork</module>. In addition,
- special features like serving different hosts under different
- userids (<module>perchild</module>) can be
- provided.</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. Because some MPMs use threads on Unix
- and others don't, Apache will always perform better if the MPM
- is chosen at configuration time and built into Apache.</p>
-
- <p>To actually choose the desired MPM, use the argument
- --with-mpm= <em>NAME</em> with the ./configure 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>
-