<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 模块

Apache MPM 预派生

可用语言:  de  |  en  |  fr  |  ja  |  tr 

描述实现一个非线程化的预派生 Web 服务器
状态MPM
模块标识符mpm_prefork_module
源文件prefork.c

摘要

此多处理模块 (MPM) 实现一个非线程化的预派生 Web 服务器。每个服务器进程都可以响应传入请求,而父进程管理服务器池的大小。它适用于需要避免线程以确保与非线程安全库兼容的站点。它也是隔离每个请求的最佳 MPM,因此单个请求的问题不会影响其他请求。

此 MPM 非常自调节,因此很少需要调整其配置指令。最重要的是,MaxRequestWorkers 要足够大,以处理您预计接收到的同时请求数量,但要足够小,以确保所有进程都有足够的物理 RAM。

Support Apache!

主题

指令

错误修复清单

另请参阅

top

工作原理

单个控制进程负责启动子进程,这些子进程监听连接并在连接到达时提供服务。Apache httpd 始终尝试维护多个 备用 或空闲服务器进程,这些进程随时准备为传入请求提供服务。这样,客户端就不需要等待创建新的子进程才能为其请求提供服务。

StartServersMinSpareServersMaxSpareServersMaxRequestWorkers 规范了父进程如何创建子进程来为请求提供服务。通常,Apache httpd 非常自调节,因此大多数站点不需要调整这些指令的默认值。需要为超过 256 个同时请求提供服务的站点可能需要增加 MaxRequestWorkers,而内存有限的站点可能需要减少 MaxRequestWorkers,以防止服务器出现抖动(将内存交换到磁盘并返回)。有关调整进程创建的更多信息,请参阅 性能提示 文档。

虽然父进程通常在 Unix 下以 root 身份启动以绑定到端口 80,但子进程由 Apache httpd 以特权较低的用户的身份启动。UserGroup 指令用于设置 Apache httpd 子进程的特权。子进程必须能够读取将要提供的所有内容,但应尽可能少地拥有超出此范围的特权。

MaxConnectionsPerChild 控制服务器通过杀死旧进程并启动新进程来回收进程的频率。

此 MPM 使用 mpm-accept 互斥锁来序列化对传入连接的访问,当受到雷鸣般的羊群问题的影响时(通常,当有多个监听套接字时)。此互斥锁的实现方面可以使用 Mutex 指令进行配置。有关此互斥锁的更多信息,请参阅 性能提示 文档。

top

MaxSpareServers 指令

描述空闲子服务器进程的最大数量
语法MaxSpareServers number
默认值MaxSpareServers 10
上下文服务器配置
状态MPM
模块预派生

MaxSpareServers 指令设置所需的空闲子服务器进程的最大数量。空闲进程是指未处理请求的进程。如果空闲进程多于 MaxSpareServers,则父进程将杀死多余的进程。

仅在非常繁忙的站点上才需要调整此参数。将此参数设置为较大的数字几乎总是错误的做法。如果您尝试将值设置为等于或低于 MinSpareServers,Apache HTTP 服务器将自动将其调整为 MinSpareServers + 1

另请参阅

top

MinSpareServers 指令

描述空闲子服务器进程的最小数量
语法MinSpareServers number
默认值MinSpareServers 5
上下文服务器配置
状态MPM
模块预派生

MinSpareServers 指令设置所需的空闲子服务器进程的最小数量。空闲进程是指未处理请求的进程。如果空闲进程少于 MinSpareServers,则父进程会创建新的子进程:它会生成一个子进程,等待一秒钟,然后生成两个子进程,等待一秒钟,然后生成四个子进程,它会以指数方式继续,直到每秒生成 32 个子进程。只要满足 MinSpareServers 设置,它就会停止。

仅在非常繁忙的站点上才需要调整此参数。将此参数设置为较大的数字几乎总是错误的做法。

另请参阅

可用语言:  de  |  en  |  fr  |  ja  |  tr 

top

评论

注意
这不是问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果这些评论已实施或被认为无效/与主题无关,则可能会被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表