青蛙学Linux—Apache三种工作模式

Apache目前一共有三种稳定的MPM模式(Multi-Processing Module,多进程处理模块),分别是prefork、worker和event,它们也代表着Apache的演变和发展。在Apache 2.0版本中默认使用的是prefork,2.2版本默认使用的是worker,2.4版本默认使用的是event。

可以使用Apache安装目录下的bin目录中的httpd查看当前使用的MPM模式,使用以下命令:

./httpd -V

返回的信息中Server MPM即为当前Apache使用的MPM模式。

如果要指定Apache的运行模式,可以在configure时使用

--with-mpm=prefork|worker|event

来指定具体使用的MPM模式,也可以使用

--enable-mpms-shared=all

使Apache支持全部三种MPM模式。

在Apache的子配置文件httpd-mpm.conf中可以对这三种MPM模式进行配置。

1、prefork

prefork是一个古老但是非常稳定的MPM模式,实现了一个非线程的、预派生子进程的工作机制。在Apache启动时,会预先派生出一些子进程,然后等待请求,这种方式可以减少频繁创建和销毁进程的开销;每个子进程只有一个线程,在一个时间点内只能处理一个请求,因此也不用担心线程安全问题。但是,一个进程占用的资源相对比较多,会消耗大量内存,在处理高并发的时会存在性能瓶颈。

prefork的配置位于httpd-mpm.conf的如下部分:

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>
  • StartServers:Apache在启动时自动启动的进程数
  • MinSpareServers:最小空闲进程数。保持空闲进程可以不必在请求到来时产生新的进程,以减小系统的开销
  • MaxSpareServers:最大空闲进程数。一旦空闲进程超过这里设置的值,Apache会自动关闭多余的进程;如果该值小于MinSpareServers,Apache会自动调整为MinSpareServers+1
  • MaxRequestWorkers:最大同时处理请求的进程数,也就是最大的同时连接数,超过该数目的请求将排队
  • MaxConnectionsPerChild:每个子进程可以处理的最大请求数,也就是一个进程所能提供的最大传输次数,当一个进程的请求超过此数目后,连接将自动关闭。0为无限,即子进程永不销毁,推荐设置为20000,基本能满足中小型网站的需要

2、worker

猜你喜欢

转载自www.cnblogs.com/yu2006070-01/p/10303808.html