本文摘自PHP中文网,作者(*-*)浩,侵删。
Apache的功能特性
1.高度模块化 ( 推荐学习:apache入门 )
Apache支持把更多的功能以模块化的形式存在,通过加载和卸载模块完成不同功能的增加和删除,类似于Linux内核的模块化,可以加载和卸载内核的驱动模块。构成了core+modules模型;
2.支持动态加载和卸载模块
就是类似热拔插一样的功能,可以实现不重启服务的情况加载和卸载模块并使其生效。
3.支持多路处理模块MPM
Apache可以有三种(处理)工作模式,分别为:
prefork---多进程I/O模型,一个进程处理一个请求,是Apache的默认工作模式
该工作模式下存在一个主进程和多个子进程,那些个子进程由主进程生成和回收。主进程负责生成套接字、管理子进程,但是不负责处理请求,主进程由root身份执行;
子进程才是真正负责处理请求的角色,一开始会有多个空闲子进程等待处理请求,一个子进程处理一个请求,子进程由apache用户执行。
worker----复用多进程I/O模型
该工作模式下,存在一个主进程,同样地主进程负责管理子进程,并不处理请求,主进程生成多个子进程,同时每个子进程生成多个线程,一个线程处理一个请求,这样假设子进程数为M,每个子进程的线程数为N,则此工作模式可以并发处理M*N个请求。该模式下占用内存小,多用于大型网站。
event-----事件驱动模型
event和worker工作类似,都是并发处理M*N个请求。但是event做出的改进是,每个子进程中对线程划分的更加详细,有管理线程和服务线程两种,为什么要这样设计呢。
我们知道HTTP1.1版本默认为持久连接keepalive,如果建立连接却没有发送请求,就会一直占用此连接的带宽直到规定时间才会释放,因此加入了管理进程,专门监视keepalive类型的服务线程,当发生真正的请求的时候,管理线程把请求转交给服务线程处理,处理完毕后管理线程会释放服务线程的资源。增加了带宽的利用率。
相关阅读 >>
如何使用ubuntu18.04和16.04 lts上let’s encrypt保护Apache
更多相关阅读请进入《Apache》频道 >>