给自己看的apache的三种工作模式

1、prefork MPM 非线程 预派生的web服务器,在Apache启动之初,就预派生一些子进程等待连接,可以减少频繁创建和销毁进程的开销,也不用担心线程安全问题,但是一个进程相对占用资源,消耗大量内存,不擅长处理高并发的场景。
配置方式
<IfModule mpm_prefork_module>
        StartServers                     5
        MinSpareServers             5
        MaxSpareServers             5
        MaxRequestWorkers       250
        MaxConnectionsPerChild 1000
</IfModule>
2、worker  MPM worker使用了多进程和多线程的混合模式,预派生一些子进程,子进程创造线程,同时包括一个监听线程,线程通过共享父进程的内存空间,内存占用会减少一些,如果线程出现问题也只是影响Apache的一部分而不是全部。
但是在使用Keep-alive长连接的时候,某个线程会被一直占用,即使没有请求也需要等待超时才会被释放。
配置方法
        StartServers                          3
        ServerLimit                         16
        MinSpareThreads                75
        MaxSpareThreads                250
        ThreadsPerChild                    25
        MaxRequestWorkers            400
        MaxConnectionsPerchild    1000
3、Event MPM     最新的工作模式    它解决了keep-alive长连接时占用线程资源问题,会有一些专门的线程用来管理这些keep-alive类型的线程,当服务器的线程处理结束后,又允许它释放。增加了在高并发场景下的处理能力。
        StartServers                    3
        ServerLimit                    16
        MinSpareThreads          75
        MaxSpareThreads          250
        ThreadsPerChild            25
        MaxRequestWorkers      400
        MaxConnectionsPerChild   1000

你可能感兴趣的:(给自己看的apache的三种工作模式)