Apache:MPM模块prefork和worker的区别与配置

2020年11月24日09:27:31 发表评论 1,652
在httpd 2.2版本中是不支持同时编译多个MPM模块的,只能编译要使用的那个,默认是prefork工作模型,另外还有worker和event模块可使用,只不过在2.2中event还在测试阶段,到2.4才正式使用,所以本文所讲是httpd 2.2中的worker和prefork模块 如何查看Apache当前工作模块: 1、查看静态编译的模块:httpd -l   
 2、查看静态及动态编译的模块:httpd -M 
  
prefork和worker的区别: 
prefork是非线程、多进程处理模块。 
prefork会预先生成一些子进程,每个进程在同一个时间点只能处理一个请求,会根据并发需求生成更多进程来完成工作。消耗内存资源更大,但是更为高效稳定。 
  
worker是线程化、多进程处理模块。 
每个进程生成多个线程,每个线程响应一个请求,内存资源消耗小,效率没有prefork高,但是现在内存资源已经很充足,所以worker模块使用较少。 
  
如何切换MPM模块: 
1、httpd2.2版本修改MPM模块的方法: 
(1)、首先使用httpd -l来查看当前模块是prefork,使用 ps aux 查看httpd进程也可以得知。 
(2)、编辑/etc/sysconfig/httpd文件,取消以下一行的注释,修改为所需要MPM模块。 
HTTPD=/usr/sbin/httpd.worker 

(3)、重新启动httpd服务,使用ps aux命令查看当前进程,可以看到修改已经生效了。 
2、httpd2.4版本修改MPM模块的方法 
在编译安装httpd2.4时,构建MPM模块通常有两种选择,一种是把MPM编译成静态模块,还有一种是把MPM编译成动态模块。如果把MPM编译成了静态模块(编译安装时有指定--with-mpm=NAME),那么要改变MPM只能通过重新编译安装httpd修改。如果在编译安装httpd时把MPM编译成了动态模块(编译安装时指定--enable-mpms-shared选项),那么可以在/etc/httpd/httpd.conf配置文件中编辑LoadModule指令选择不同的MPM重新载入即可。在httpd2.4中MPM模块的配置文件为/etc/httpd/extra/httpd-mpm.conf。 
  
三种模块参数说明: 
httpd2.2中prefork和worker各参数说明如下: 
<IfModule prefork.c>  如果prefork.c模块存在,则定义在标签内的参数有效    StartServers:     服务开启时默认启动的工作进程数,不包括主进程    MinSpareServers:  最少空闲进程数;    MaxSpareServers:  最大空闲进程数;    ServerLimit:      最大活动进程数;    MaxClients:       并发请求的最大数,一条进程最多能处理多少个请求    MaxRequestsPerClient: 每个子进程在生命周期内所能够服务的最多请求个数</IfModule><IfModule worker.c>  如果worker.c模块存在,则定义在标签内的参数有效    StartServers:   服务器开启时,启动的子进程的个数    MaxClients:      并发请求的最大数;    MinSpareThreads:最小空闲线程数;    MaxSpareThreads:最大空闲线程数;    ThreadsPerChild:每个子进程可生成的线程数;    MaxRequestsPerChild:每个子进程在生命周期内所能够服务的最多请求个数,0表示不限定;</IfModule> 

httpd2.4中event参数说明如下:<IfModule mpm_event_module>    StartServers             默认进程数    MinSpareThreads          最小空闲线程数    MaxSpareThreads          最大空闲线程数    ThreadsPerChild          每个子进程可以生成的线程数    MaxRequestWorkers        最大线程数量    MaxConnectionsPerChild   子进程的最大连接数,当达到设置值以后,APACHE就会结束当前的子进程</IfModule> 
  

        

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: