描述: | 实现非线程的预分支Web服务器 |
---|---|
状态: | MPM |
模块标识符: | mpm_prefork_module |
源文件: | 前叉 |
该多处理模块(MPM)实现了非线程的预分支Web服务器。每个服务器进程都可以回答传入的请求,并且父进程管理服务器池的大小。它适用于需要避免使用线程以与非线程安全库兼容的站点。这也是隔离每个请求的最佳MPM,因此单个请求的问题不会影响任何其他请求。
该MPM非常自我调节,因此几乎不需要调整其配置指令。最重要的是,
MaxRequestWorkers
其大小应足以应付您希望接收的并发请求,但又应足够小,以确保有足够的物理RAM用于所有进程。
单个控制进程负责启动子进程,以监听连接并在连接到达时为其提供服务。Apache httpd始终尝试维护几个备用 服务器或空闲服务器进程,这些进程随时可以处理传入的请求。这样,客户端无需等待新的子进程被派生,就可以满足他们的请求。
在StartServers
,
MinSpareServers
,
MaxSpareServers
,和
MaxRequestWorkers
调节父进程如何创造儿童服务请求。通常,Apache httpd非常自我调节,因此大多数站点无需根据其默认值调整这些指令。需要同时处理超过256个请求的MaxRequestWorkers
站点可能需要增加,而内存有限的站点可能需要减少,MaxRequestWorkers
以防止服务器崩溃(将内存交换到磁盘,再换回磁盘)。性能提示
文档中提供了有关调优过程创建的更多信息。
虽然父进程通常是root
在Unix下启动的,以便绑定到端口80,但是子进程是由Apache httpd作为特权较低的用户启动的。在User
和Group
指令用于设置Apache的httpd的子进程的权限。子进程必须能够读取将要提供的所有内容,但应具有尽可能少的特权。
MaxConnectionsPerChild
通过杀死旧进程并启动新进程来控制服务器回收进程的频率。
mpm-accept
当遇到雷电群问题时(通常,当有多个侦听套接字时),此MPM使用互斥锁来序列化对传入连接的访问。可以使用Mutex
伪指令配置此互斥锁的实现方面
。在性能提示
文档有关于这个互斥的附加信息。
描述: | 空闲子服务器进程的最大数量 |
---|---|
句法: | MaxSpareServers number |
默认: | MaxSpareServers 10 |
内容: | 服务器配置 |
状态: | MPM |
模块: | 前叉 |
该MaxSpareServers
指令设置所需的最大空闲子服务器进程数。空闲进程是不处理请求的进程。如果有多个MaxSpareServers
空闲,那么父进程将杀死多余的进程。
仅在非常繁忙的站点上才需要调整此参数。将此参数设置为大量几乎总是一个坏主意。如果您尝试将值设置为等于或小于
MinSpareServers
,则Apache HTTP Server会自动将其调整为MinSpareServers
+ 1
。
描述: | 最小空闲子服务器进程数 |
---|---|
句法: | MinSpareServers number |
默认: | MinSpareServers 5 |
内容: | 服务器配置 |
状态: | MPM |
模块: | 前叉 |
该MinSpareServers
指令设置所需的最小空闲子服务器进程数。空闲进程是不处理请求的进程。如果MinSpareServers
空闲状态少于空闲状态,则父进程将创建新的子进程:它将先生成一个,然后等待一秒钟,然后生成两个,再等待一秒钟,然后生成四个,然后将按指数方式继续进行直到每秒每秒生成32个孩子。只要满足MinSpareServers
设置,它就会停止。
仅在非常繁忙的站点上才需要调整此参数。将此参数设置为大量几乎总是一个坏主意。