• apache2三种模式及切换到event模式


    一  apache2三种模式

      apache从2.0开始,引入了MPM(Multi-Processing Module,多进程处理模块)。MPM有prefork, worker和event(在2.4版本中稳定发布)模式,三种模式拥有不同的特点和性能

      1.1 prefork MPM

    prefork是比较古老而又稳定的apache模式,特点是每个进程都是单线程,在一个时间点只能处理一个连接,需要启动大量的进程来处理高并发的请求。由于是单线程进程,因而无须考虑线程安全的问题,可以使用非线程安全的库,例如mod_php。

    优点是成熟稳定,缺点是比较消耗内存,而且并发支持受限于进程数量,对高并发支持稍差。

      1.2 prefork MPM 

    worker同样使用多个进程,但每个进程又拥有多个线程,每个线程处理一个连接。由于线程是轻量级的,因而具有较高的并发性,同时,多个进程又获得了一定的稳定性。

    worker模式特点是占用内存少,并发性比较高,缺点是必须考虑线程安全。如果使用了keep-alive方式,一个线程可能会被一直保持一个连接,但中间没有请求,直到超时。如果有多个线程被这样占据,在高并发场景下同样会出现无线程可用的情形。

      1.3 event MPM 

     event模式是在2.4版本中才稳定发布的模式,它在worker的基础上,解决了keep-alive连接不能释放的问题。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。

    event相比于worker的优势是,它解决了worker模式下长连接线程的阻塞问题。

    值得一提的是,worker/event模式的请求处理模式,已经和nginx的libevent模式相同了。在mod_php模式下,每个apache进程都需要直接执行php,所以很容易达到系统资源限制。但是在php-fpm模式下,apache只负责建立连接,然后把请求传递给php-fpm来处理。这样,apache可以保持大量的连接,请求处理能力取决于php服务器的性能。

    由于event是明显优于worker的,所以在apache2.4及后续版本中,一般优先选择event模式。

    二  模式查看

    apachectl -V | grep -i mpm

    三  模式切换

      ubuntu通过apt安装的apache2默认是mpm_prefork模式,想要切换到mpm_event模式,PHP支持库也要改变

      3.1 关掉当前php模块

    sudo a2dismod php7.0

      3.2 关掉mpm_prefork

    sudo a2dismod mpm_prefork

      3.3 启用mpm_event

    sudo a2enmod mpm_event

      3.4 安装fpm

    sudo apt-get install php7.0-fpm libapache2-mod-fcgid
    

       3.5 启用fcgid相关模块

    sudo a2enmod actions fcgid alias proxy_fcgi proxy

       3.6 更新配置,重启apache和 fpm

    sudo a2enconf php7.0-fpm
    
    sudo service apache2 restart
    sudo service php7.0-fpm restart

       3.7 倘若用到swoole等拓展,需要修改fpm的php.ini并重启fpm

  • 相关阅读:
    cookie操作
    css加载动画...
    三目运算符的运用
    遍历对象长度
    2年
    相亲

    股市周期
    功利心
    思考笔记
  • 原文地址:https://www.cnblogs.com/bushuwei/p/13618692.html
Copyright © 2020-2023  润新知