- Apache作为常驻后台任务运行。守侯进程(Unix下Daemon)和服务(Windows下Service)。
- inetd模式:超级进程代劳守侯进程,收到Web请求启动一个Web服务进程,服务完后进程退出。
- Apache=内核+模块s。
- 模块:可静态编译到服务器中。通常放到/Modules/和/libexec/下动态加载。
- APR:可移植运行时库。为上层统一提供接口
- MRM:多处理模块。特殊功能模块,唯一直接访问操作系统模块,提供不同平台优化功能
- 启动阶段:以root身份解析配置文件,加载模块和初始化相关资源,单进程单线程运行。
- 运行阶段:以非特权用户身份。
- 启动时,任何要求root身份的操作要运行,尽可能多初始化。很耗时耗资源。
- Apache配置代码执行两次。1.检查服务器配置是否正确。2.真正系统启动,引导至运行阶段。
- httpd.conf配置=命令+容器+注释。
- 指令:在内核或一些模块中实现。
- 容器:多指令集,提供上下文。
- 注释:以‘#’开头。
- 模块未加载,则相关指令无法运行。mod_so模块必须用静态方式进行链接来加载其他模块。
- 启动阶段末期,程序控制转向MPM。MPM在系统级管理Apache。
- MPM:维护进程池和线程池。提供服务程序与操作系统之间接口,唯一系统层模块,根据平台优化Apache
- MPM进程为管理者,管理子工作进程。子工作进程处理请求,MPM负责创建和删除子工作进程,处理信号量。
- 停止阶段:所有注册的清除操作运行。
- Prefork MPM:基于非线程模型。对于类似PHP非线程安全语言,唯一安全选择。
- Worker MPM:线程模式,内存消耗低。
- Event MPM:不能在HTTPS下访问。Keepalive会导致线程耗光。
- 有时应用程序开发平台更要考虑MPM而不是操作系统。
【SpamHunter】Apache之框架初探——整理自书籍
最新推荐文章于 2024-05-03 14:13:41 发布