日期:2014-05-16 浏览次数:21013 次
本博文主要参数 Apache 2.2文档以及Apache模块开发指南
Apache的整个运行可以分为两个阶段:启动阶段和运行阶段。
在启动阶段时,它以ROOT特权来启动,进行解析配置文件(一般就是httpd.conf)、加载模块和初始化一些日志文件及内存共享段等操作,在启动阶段准备结束时,apache的控制转向多处理模块MPM,此时使得MPM能够在系统特权级运行,从而管理接下来的运行阶段。因为当处于运行阶段时,程序会放弃ROOT特权,以接收并处理网络中用户的服务请求,所以MPM也是在启动阶段初始化。
一,什么是MPM
MPM,是Multi -Processing Modules的缩写,就是多处理模块的意思,它是在Apache 2.0中引入的一个概念,共引入目标是将Apache的结构能够模块化,把核心的任务处理作为一个可插拔的模块来运行,这样就很容易根据不同的环境和应用来更有效的优化Apache的运行,它是Apache2.X中最影响其性能的,最核心的特性,因为直接决定了Apache的工作方式。这里有一个问题是:它究竟怎么样影响了Apache。
可以这么说:它决定了Apache以什么样的方式接入外部请求,如何Apache内部怎么样处理这个请求过程,这当然是最核心的了吧,比如它可以决定在处理外部请求的时候,需不需要启动多线程,如果是用多线程,最多可以多少个线程,一个进程可以产生最多多少个线程,类似于这种配置,都来自于MPM。MPM有一些指令可以专门用于调节父进程如何产生子进程,主要是StartServers,MinSpareServers,MaxSpareServers,MaxClients等,下面会介绍这些指令是什么意思。
它提供Apache服务程序和其所在的操作系统之间的接口,这个模块的主要职责是:
其实MPM本身也是一个模块,它是Apache中唯一一个系统层的模块,Apache在编译的时候选定一个所要使用的MPM模块,我们先来了解一下MPM模块在系统结构中的位置
在任何时候,一个正常的Apache都只有一个MPM模块在运行。
二,有哪些MPM可以被使用
在安装apache时,我们可以查看哪些MPM模块可以被使用。
[root@localhost httpd-2.2.11]# ./configure --help | grep mpm --with-mpm=MPM Choose the process model for Apache to use. MPM={beos|event|worker|prefork|mpmt_os2}
[root@localhost httpd-2.2.11]# /install/apache2/bin/httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c [root@localhost httpd-2.2.11]#这表示Apache当前的正在工作的MPM是prefork工作方式的MPM,这也是一种缺省的模块,如果需要其它的MPM模块,在编译的时候用--with-mpm指定。