创新路
我们一直在努力

Apache的三种工作模式

  Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中(来源百度百科)

  Apache在运行时有三种工作模式perfork、worker、event

  perfork是多进程模式

  worker是多进程多线程模式

  event是worker的变种模式

  怎么查看apache现在运行的是什么模式:httpd -l

  1.perfork模式

    perfork是多进程模式,也就是说apache会同时产生多个进程,每个进程只会产生一个线程,然后当服务器接收到请求后,由这个线程来处理,然后返回结果

    image.png

    perfork优点:响应快,速度快,连接稳定,线程安全

    perfork缺点:由于一个进程只有一个线程,所以特别消耗内存,同样内存的情况下线程数量极少,所以不适用于高并发

    参数配置

        <IfModule mpm_prefork_module> 

        StartServers       8                   启动Apache的时候预先启动几个子进程

        MinSpareServers    5               最少等待进程数量

        MaxSpareServers   20             最大等待进程数量

        ServerLimit      256                  最大进程数量限制

        MaxClients       256                  最大连接限制

        MaxConnectionsPerChild   4000    每个进程最大请求数量,超过则重启进程进行处理,如果设置为0,则永不销毁

  2.worker模式

    worker是多进程多线程模式,顾名思义,就是有多个进程,每个进程又有多个线程,由于线程是共享进程内存空间,所以同样内存下worker比perfork能处理的请求数量多,相当于perfork的升级版本,但是一个进程下的某个线程出现问题,那么这个进程下的所有线程基本上都会出现问题,就会相互影响。在keepalive长连接模式下,线程会继续等待,知道链接超时后,才会得到释放

    image.png

    worker优点:能处理高并发

    worker缺点:线程出问题影响一部分,线程安全,长连接模式下线程超时才释放

        参数配置

        <IfModule mpm_worker_module> 

        StartServers   3 
        ServerLimit   16 
        MinSpareThreads   75         
        MaxSpareThreads   250 
        ThreadsPerChild   64                每个子进程产生的线程数
        MaxRequestWorkers   400        

        MaxConnectionsPerChild   1000 

  3.event模式

    既然说到event模式是worker的变种模式,那么是变了什么呢?event模式把服务进程从连接中分离了出来,形成了专门的线程来管理这些keepalive长连接的线程,当处理完请求是,执行完毕后会释放掉,就不用继续等待到超时才释放掉。image.png

    event优点:解决了keepalive超时释放问题,高并发

    event缺点:线程安全,线程不稳定会影响同进程下线程

未经允许不得转载:天府数据港官方信息博客 » Apache的三种工作模式

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机