|
多道处理模块(MPMs) |
描述什么是多道处理模块以及它如何为Apache所使用。
Apache HTTP服务器被设计为一个强大、灵活的能够在多种平台上及不同的环境下工作的服务器。 不同的平台和不同的环境经常产生不同的需求,或是会为了达到同样的最佳效果而采用不同的方法。Apache凭借它的模块设计很好的适应了大量不同的环境。这一设计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定服务器的不同附加功能。
Apache 2.0将这种模块式设计延伸到web服务器的基础功能上。这个发布版本带有多道处理模块的选择以处理本机的网络端口绑定、接受请求和分出子进程来处理这些请求。
将模块设计延伸到这一层面主要有一下两大好处:
· Apache可以更纯粹、更有效的支持各种操作系统。尤其是在mpm_winnt使用本地网络特性以代替Apache 1.3中使用的POSIX层后,Windows版本的Apache现在有了更好的性能。这个优势借助特定的MPM同样延伸到其他各种操作系统。
· 服务器可以为某些特定的站点进行优化。比如说,需要更好缩扩性的站点可以选择象worker这样线程化的MPM,而需要更好的稳定性和兼容性以适应一些旧的软件的站点可以用prefork。此外,象用不同的用户号(perchild)伺服不同的站点这样的特性也能提供了。
从用户层面来讲,MPMs更像其他Apache模块。而主要的不同在于:不论何时,有且仅有一个MPM必须被载入到服务器中。现有的MPM列表可以在这里找到模块索引。
选择一个MPM
MPM必须在编译配置时进行选择,并编译到服务器中。如果编译器能够确定线程功能被启用,它将会负责优化大量功能。因为一些MPM在Unix上使用了线程,而另外一些没有使用,所以如果在编译配置时选择了MPM并编译进Apache,Apache将会有更好的表现。
你可以在使用./configure脚本时用 --with-mpm= 名称 选择想要的MPM。名称 就是你想要的MPM的名称。
一旦服务器已经编译完成,则可以用./httpd -l参数来决定使用哪个MPM。这个命令将列出所有已经被编译到服务器中的模块,包括MPM。
默认的MPM
下表列出了不同操作系统下默认的MPMs。如果你在编译时没有进行选择,这将是默认选择的MPM。
BeOS |
beos |
OS/2 |
mpmt_os2 |
Unix |
prefork |
Windows |
mpm_winnt |
|
返回 |
|