Apache worker/prefork模式说明及优化配置

  --with-mpm=worker 编译时可以指定 默认是perfork模式
查看模式
[root@localhost ~]# httpd -V | grep "Server MPM"
Server MPM: Worker
prefork模式(默认):

主进程
子进程 1
子进程 2
子进程 3

  使用的是多个子进程,而每个进程只有一个线程,每个进程在某个确定的时间只能维持一个连接。
工作原理:
  控制进程最初建立若干个子进程,为了不在请求到来时再生成子进程,所以要根据需求不断的创建新的子进程,最大可以达到每秒32个知道满足需求为止。
安装方法:
  在编译时,指定参数--with-mpm=prefork 不加也可以,因为默认就是
优点:
  效率高,稳定,安全,对于线程调试困难的平台来说,调试更容易些。
缺点:和worker模式比消耗资源更多,没有worker模式并发高。
[root@localhost ~]# sed -rn '30,42p' /usr/local/httpd/conf/extra/httpd-mpm.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5 开机启动进程
MinSpareServers 5 最小空闲
MaxSpareServers 10 最大空闲
MaxClients 150 最大进程数
MaxRequestsPerChild 0 一个进程不限制接收请求数
</IfModule>
worker模式
      
主进程    线程 1   线程 2
子进程 1   线程 1  线程 2
子进程 2   线程 1  线程 2
子进程 3   线程 1  线程 2

  是Apache2.x新引进来的模式,是线程与进程的结合,在worker模式下,会有多个子进程,每个子进程又会有多个进程,每个线程在某个确定的时间只能维持一个连接。
工作原理:
  由主控制进程生成若干个子进程,而每个子进程中又包含固定的线程数,各个线程独立处理请求,同样为了不在请求到来时再生成线程,在配置文件中设置了最小和最大的空闲线程数及所有子进程中的线程总数,如果现有子进程中的线程总数不能满足并发及负载,控制进程将派生新的子进程。
优点:内存占用比prefork模式低,适合高并发,高流量http服务
缺点:假如一个线程崩溃,整个进程就会被连同其任何线程一起死掉,由于线程共享内存空间,所以一个程式在运行时必须被系统识别为每个线程是安全的。服务稳定性不如prefork模式。
[root@localhost ~]# sed -rn '44,58p' /usr/local/httpd/conf/extra/httpd-mpm.conf
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2 起始进程
MaxClients 150 最大进程
MinSpareThreads 25 最小空闲线程
MaxSpareThreads 75 最大空闲线程
ThreadsPerChild 25 每个子进程的线程数量
MaxRequestsPerChild 0 一个子进程的最大请求 0表示不限
</IfModule>

觉得本文章不错的可以分享给您的朋友或订阅我,后期会分享更多的Linux技术文章

转载于:https://blog.51cto.com/13639298/2149200

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值