早在开发Apache2.0版本时,开发人员就打算为Apache建立一个能够在所有平台上运行的处理模块,所有平台
的开发人员就可以使用这个模块的API编程。可是经过几个月的开发之后,开发者发现如果让Apache在所有平台
上运行,需要考虑太多问题,例如各个平台在建立进程和线程时的特性,于是,为了解决这个问题,Apache开发人员开发出
MPM(Mutli-Processing Modules 多通道处理模块),毫不夸张的说MPM的引入是Apache从1.3版本到2.0版本
最重要的变化,它使得Apache能适应更多平台以及不同的工作环境,极大的扩展了Apache的功能,使Apache以更简洁、
更有效的方式支持多种操作系统。同时Apache服务器还可以为一些特定的站点进行定制,例如:需要更好的伸缩性的站点可以选择使用worker或者event,
的开发人员就可以使用这个模块的API编程。可是经过几个月的开发之后,开发者发现如果让Apache在所有平台
上运行,需要考虑太多问题,例如各个平台在建立进程和线程时的特性,于是,为了解决这个问题,Apache开发人员开发出
MPM(Mutli-Processing Modules 多通道处理模块),毫不夸张的说MPM的引入是Apache从1.3版本到2.0版本
最重要的变化,它使得Apache能适应更多平台以及不同的工作环境,极大的扩展了Apache的功能,使Apache以更简洁、
更有效的方式支持多种操作系统。同时Apache服务器还可以为一些特定的站点进行定制,例如:需要更好的伸缩性的站点可以选择使用worker或者event,
需要更好的稳定性和兼容性的站点使用prefork。而在支持POSIX线程的UNIX/Linux系统上,Apache可以通过不同的MPM运行在多进程与多线程混合模式下,增强部分配置的可扩充性能。至于Windows系统,可以使用mpm_winnt来代替Apache1.3中使用的POSIX模拟层,已取得更好的性能。
由于MPM无法被模块化,所以对它的选择只能在编译时选择,并且只能被静态的编译到服务器中,在Apache2.2版本中MPM只能选择一个,同一台服务器无法使用多个MPM模块的(Apache2.4版本以前的版本),在APache2.4版本开始可以通过修改Apache的配置文件来实现MPM模块切换。
MPM模块名 | 说 明 |
BeOS |
专门针对BeOS优化过的多路处理模块(MPM),此模块是BeOS系统默认的MPM模块。 ※在Apache2.4版本的官方文档中去除了此项 |
mpm_netware | 专门为Novell NetWare优化的,线程化的多路处理模块(MPM),此模块是NetWare系统默认的MPM模块 |
mpm_winnt |