Apache 2.0性能优化—MPM的选择与配置

2009-05-13 12:05:22来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 
[url=javascript:;]Apache[/url]
2.0在性能上的改善最吸引人。在支持POSIX线程的Unix系统上,Apache可以通过不同的
[url=javascript:;]MPM[/url]
运行在一种多进程与多线程相混合的模式下,增强
部分配置的可扩充性能。相比于Apache
1.3,2.0版本做了大量的
[url=javascript:;]优化[/url]
来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。但是在编译和运行时刻,2.0也有许多可以显著提高性
能的选择。本文不想叙述那些以功能换取速度的指令,如HostnameLookups等,而只是说明在2.0中影响性能的最核心特性:MPM(Multi
-Processing Modules,多道处理模块)的基本工作原理和配置指令。
  毫不夸张地说,MPM的引入是Apache
2.0最重要的变化。大家知道,Apache是基于模块化的设计,而Apache
2.0更扩展了模块化设计到Web服务器的最基本功能。
[url=javascript:;]服务器[/url]
装载了一种多道处理模块,负责绑定本机网络端口、接受请求,并调度子进程来处理请求。扩展模
块化设计有两个重要好处:
  ◆ Apache可以更简洁、有效地支持多种操作系统;
  ◆ 服务器可以按站点的特殊需要进行自定制。
  在用户级,MPM看起来和其它Apache模块非常类似。主要区别是在任意时刻只能有一种MPM被装载到服务器中。
  指定MPM的方法
 
 下面以Red Hat Linux 9为平台,说明在Apache 2.0中如何指定MPM
(Apache采用2.0.45)。先解压缩源代码包httpd-2.0.45.tar.gz,生成httpd-2.0.45目录(Apache
1.3源代码包的命名规则是apache_1.3.NN.tar.gz,而2.0版则是httpd-2.0.NN.tar.gz,其中NN是次版本号)。
  进入httpd-2.0.45目录,运行以下代码:
 $ ./configure --help|grep mpm
显示如下:
--with-mpm=MPM
Choose the process model for Apache to use.
MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}
 
 上述操作用来选择要使用的进程模型,即哪种MPM模块。Beos、mpmt_os2分别是BeOS和OS/2上缺省的MPM,
perchild主要设计目的是以不同的用户和组的身份来运行不同的子进程。这在运行多个需要CGI的虚拟主机时特别有用,会比1.3版中的SuExec
机制做得更好。leader和threadpool都是基于
[url=javascript:;]worker[/url]
的变体,还处于实验性阶段,某些情况下并不会按照预期设想的那样工作,所以
Apache官方也并不推荐使用。因此,我们主要阐述
[url=javascript:;]prefork[/url]
和worker这两种和性能关系最大的产品级MPM (
有关其它的MPM详细说明,请参见Apache官方文档:
http://httpd.apache.org/docs-2.0/mod/)

  prefork的工作原理及配置
 
 如果不用“--with-mpm”显式指定某种MPM,prefork就是Unix平台上缺省的MPM。它所采用的预派生子进程方式也是
Apache
1.3中采用的模式。prefork本身并没有使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不
同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。
  若使用prefork,在make编译和make
install安装后,使用“httpd
-l”来确定当前使用的MPM,应该会看到prefork.c(如果看到worker.c说明使用的是worker
MPM,依此类推)。再查看缺省生成的httpd.conf配置文件,里面包含如下配置段:
StartServers 5
MinSpareServers 5

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:vsftpd使用指南final篇

下一篇:Apache Prefork和Worker模式的性能比较测试