Apache 基础架构:Multi-Processing Module 深度解析

舞夢輝影

舞夢輝影

2026-07-10

415人浏览

原创

apache的mpm是不可卸载的核心模块,编译时静态链接、运行时唯一存在;prefork为纯进程模型,稳定但内存高;worker为进程-线程混合模型,资源利用率高但需线程安全;event为事件驱动模型,专优长连接,https下不支持。

apache 基础架构:multi-processing module 深度解析

Apache 的核心并发能力由 Multi-Processing Module(MPM)决定,它不是普通插件,而是服务器运行的底层骨架——控制端口监听、连接接收、子进程/线程创建与请求分发。选错 MPM,再好的配置也难突破性能瓶颈。

MPM 是什么,为什么必须且只能有一个

MPM 是 Apache 2.0 引入的不可卸载核心模块,负责最基础的请求调度逻辑。它在编译阶段就静态链接进 httpd 二进制文件,运行时无法动态切换或共存多个。这是因为不同 MPM 对内存模型、信号处理、锁机制的设计完全不同:prefork 依赖进程隔离,worker 依赖线程共享内存,event 则引入异步事件循环。混用会导致未定义行为甚至崩溃。

常见确认方式:

  • 执行 httpd -V | grep MPM 查看编译时选定的 MPM
  • 运行 httpd -M | grep mpm 查看当前加载的 MPM 模块名(如 mpm_prefork_module)
  • Windows 系统默认固定使用 mpm_winnt,不提供选择

Prefork、Worker、Event 三种模式的关键差异

三者本质是应对不同负载特性的设计取舍:

Apache 2.4.62
Apache 2.4.62

PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。

下载
  • Prefork:纯多进程,每个进程只服务一个连接。无共享内存,崩溃互不影响,兼容所有非线程安全模块(如传统 mod_php)。适合低并发、高稳定性要求场景,但内存占用随并发线性增长
  • Worker:多进程 + 多线程混合。每个进程内含多个线程,线程共享进程内存(如代码段、PHP 解释器),显著节省内存。需确保所有加载模块线程安全
  • Event:基于 Worker 改进的事件驱动模型。主线程专责监听和调度,工作线程专注处理活跃连接,对长连接(如 HTTP Keep-Alive、WebSocket)支持更高效。是当前高并发推荐首选

如何根据实际需求选型

选型不能只看“最新”或“最火”,要结合运行环境与业务特征:

  • 运行旧版 PHP(
  • 已迁移到 PHP-FPM 或使用线程安全扩展(如 PHP 7.4+ ZTS 版本),可直接上 event
  • 系统为 CentOS/RHEL 7+ 或 Ubuntu 18.04+,内核支持 epoll,event 性能优势明显
  • 站点含大量静态小文件 + 高并发短连接,worker/event 均可;若同时存在较多 CGI 脚本或非标准模块,prefork 更稳妥

关键配置参数的实际含义

MPM 配置通常位于 httpd-mpm.conf 或主配置中以 区块定义:

  • StartServers:启动时预创建的子进程数,影响冷启动响应速度
  • MinSpareThreads / MaxSpareThreads(worker/event):空闲线程上下限,过低会频繁创建销毁,过高浪费内存
  • MaxRequestWorkers:同一时刻最大并发处理请求数,等于 prefork 的进程数上限,或 worker/event 的线程总数上限
  • ThreadsPerChild:每个子进程创建的线程数,worker/event 必配,直接影响进程与线程比例
  • MaxConnectionsPerChild:子进程处理多少请求后退出,用于缓解内存泄漏累积

配置不合理会导致资源耗尽或连接被拒绝,建议根据服务器内存、CPU 核心数与平均请求内存占用综合计算。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

apache apache mpm

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

355

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

617

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1195

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

428

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1031

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1825

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

322

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程