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

Apache HTTP 服务器版本 2.2

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

# 多处理模块(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