| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta name="generator" content="HTML Tidy, see www.w3.org" /> |
| |
| <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:</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 <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/threaded.html">threaded</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> |
| |
| <h2 align="center">Choosing an MPM</h2> |
| |
| <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> |
| |
| <h2 align="center">MPM Defaults</h2> |
| |
| <ul> |
| <li>BeOS: mpmt_beos</li> |
| |
| <li>OS/2: mpmt_os2</li> |
| |
| <li>Unix: prefork</li> |
| |
| <li>Windows: winnt</li> |
| </ul> |
| <!--#include virtual="footer.html" --> |
| </body> |
| </html> |
| |