blob: b755b6451bf820d526cd6c9054354c5decb58c76 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Apache Multi-Processing Modules (MPMs)</TITLE>
</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#000080"
ALINK="#FF0000"
>
<!--#include virtual="header.html" -->
<h1 align="center">Apache Multi-Processing Modules</h1>
<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:
<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 <a
href="mod/mpm_winnt.html">mpm_winnt</a> 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 <a
href="mod/mpmt_pthread.html">mpmt_pthread</a>, while sites requiring
stability or compatibility with older software can use a <a
href="mod/prefork.html">preforking MPM</a>. In addition, special
features like serving different hosts under different userids
(<a href="mod/perchild.html">perchild</a>) 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>
<!-- XXX: Needed here: a brief discussion or reference to instructions
on how to choose and load an MPM, how to figure out what MPM you are
currently using, and what MPMs are the defaults on various
platforms. -->
<!--#include virtual="footer.html" -->
</body>
</html>