多处理模块(MPM) - Apache HTTP 服务器 版本 2.2

Apache HTTP 服务器版本 2.2

Apache > HTTP 服务器 > 文档 > 版本 2.2

#### Please note

This document refers to a legacy release (2.2) of Apache httpd. The active release (2.4) is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

# 多处理模块(MPM)

可用语言: de | en | es | fr | ja | ko | tr | zh-cn

本文档介绍了什么是多处理模块，以及 Apache HTTP 服务器如何使用它们。

- 评论

## 介绍

Apache HTTP 服务器被设计为一个功能强大，并且灵活的 web 服务器， 可以在很多平台与环境中工作。不同平台和不同的环境往往需要不同 的特性，或可能以不同的方式实现相同的特性最有效率。Apache 通过模块化的设计来适应各种环境。这种设计允许网站管理员通过在 编译时或运行时，选择哪些模块将会加载在服务器中，来选择服务器特性。

Apache 2.0 扩展此模块化设计到最基本的 web 服务器功能。 它提供了可以选择的多处理模块(MPM)，用来绑定到网络端口上，接受请求， 以及调度子进程处理请求。

扩展到这一级别的服务器模块化设计，带来两个重要的好处:

- Apache 能更优雅，更高效率的支持不同的平台。尤其是 Apache 的 Windows 版本现在更有效率了，因为 `mpm_winnt` 能使用原生网络特性取代在 Apache 1.3 中使用的 POSIX 层。它也可以扩展到其它平台 来使用专用的 MPM。
- Apache 能更好的为有特殊要求的站点定制。例如，要求 更高伸缩性的站点可以选择使用线程的 MPM，即 `worker` 或 `event`； 需要可靠性或者与旧软件兼容的站点可以使用 `prefork`。

在用户看来，MPM 很像其它 Apache 模块。主要是区别是，在任何时间， 必须有一个，而且只有一个 MPM 加载到服务器中。可用的 MPM 列表位于 模块索引页面。

## 选择 MPM

MPM 必须在编译前夕，配置时指定，然后编译到服务器程序中。 仅当编译器知道使用了线程时，它才有能力优化许多函数。

为了使用指定的 MPM，请在执行 `configure` 时，使用参数 `--with-mpm=NAME`。NAME 是指定的 MPM 名称。

编译完成后，可以使用 `./httpd -l` 来确定选择的 MPM。 此命令会列出编译到服务器程序中的所有模块，包括 MPM。

## 默认 MPM

下表列出了不同系统的默认 MPM。如果你不在编译时选择，那么它就是你将要使用的 MPM。

BeOS | `beos`
Netware | `mpm_netware`
OS/2 | `mpmt_os2`
Unix | `prefork`
Windows | `mpm_winnt`

可用语言: de | en | es | fr | ja | ko | tr | zh-cn

## 评论

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.