Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中(来源百度百科)
Apache在运行时有三种工作模式perfork、worker、event
perfork是多进程模式
worker是多进程多线程模式
event是worker的变种模式
怎么查看apache现在运行的是什么模式:httpd -l
1.perfork模式
perfork是多进程模式,也就是说apache会同时产生多个进程,每个进程只会产生一个线程,然后当服务器接收到请求后,由这个线程来处理,然后返回结果

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长连接模式下,线程会继续等待,知道链接超时后,才会得到释放

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长连接的线程,当处理完请求是,执行完毕后会释放掉,就不用继续等待到超时才释放掉。
event优点:解决了keepalive超时释放问题,高并发
event缺点:线程安全,线程不稳定会影响同进程下线程
未经允许不得转载:天府数据港官方信息博客 » Apache的三种工作模式
客官点个赞呗! (0)