apache的三种mpm模式

稳定的模式有prefork  worker  event,编译的时候,可以用configure的参数指定  --with-mpm = prefork | worker | event , 也可以编译为3种都支持, --enable-mpmx-shared = all


1)prefork模式: 传统文档,就是在apache启动的时候,就预先fork一些子进程,然后等待请求进来,这样可以减少频繁创建和销毁进程的开销,每个子进程有一个线程,在一个时间点只能处理一个请求

优点:成熟稳定,兼容所有老的模块,同时无需担心线程安全问题

缺点:一个进程占用想多更多的系统资源,消耗更多的内存,不擅长处理高并发的请求,它会把请求放进队列,一直等到有可用进程,请求才会被处理


2)worker模式:使用多进程和多线程混合,也是预选fork处几个子进程,然后每个子进程创建一些线程,同时包括一个监听线程每个请求进来,会被分配到一个线程来服务,高并发时有更多的线程可以使用

那为什么还要多进程呢 ?如果一个县城挂掉,会导致父进程连同其它正常的子线程都挂掉,为了防止这种情况出现就不能全部使用线程,使用多个进程加多进程,若某个线程出现异常,受影响的只是apache的一部分服务,而不是所有

优点:占用更少的内存,该并发时表现优秀

缺点:必须考虑线程安全问题,因为多个子进程时共享父进程的内存地址的,若使用keep-alive的长连接方式,某个线程一直占据,也许中间没有情趣,也需要等到超时才会被释放,若过多的线程被占用,会导致高并发时无服务线程可用


3)event模式:类似worker,会有一个专门的线程管理这些keep-alive类型的线程,当有真是请求过来的时候,将请求传递给服务线程,执行完毕后又允许它释放,增强了高并发场景下的处理能力

遇到不兼容的模块时,会退回到worker模式


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值