mpm_prefork
| 描述: | 实现非线程的预分支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 指令
| 描述: | 空闲子服务器进程的最大数量 |
|---|---|
| 句法: | MaxSpareServers number |
| 默认: | MaxSpareServers 10 |
| 内容: | 服务器配置 |
| 状态: | MPM |
| 模组: | 前叉 |
该MaxSpareServers指令设置所需的最大空闲子服务器进程数。空闲进程是不处理请求的进程。如果有多个MaxSpareServers空闲,那么父进程将杀死多余的进程。
仅在非常繁忙的站点上才需要调整此参数。将此参数设置为大量几乎总是一个坏主意。如果您尝试将值设置为等于或小于MinSpareServers,Apache HTTP Server会自动将其调整为MinSpareServers+ 1。
参见
MinSpareServersStartServersMaxSpareThreads
MinSpareServers 指令
| 描述: | 最小空闲子服务器进程数 |
|---|---|
| 句法: | MinSpareServers number |
| 默认: | MinSpareServers 5 |
| 内容: | 服务器配置 |
| 状态: | MPM |
| 模组: | 前叉 |
该MinSpareServers指令设置所需的最小空闲子服务器进程数。空闲进程是不处理请求的进程。如果MinSpareServers空闲状态少于空闲状态,则父进程将创建新的子进程:它将生成一个子进程,等待一秒钟,然后生成两个子进程,等待一秒钟,然后生成四个子进程,然后将以指数方式继续进行直到每秒每秒生成32个子进程。只要满足MinSpareServers设置,它就会停止。
仅在非常繁忙的站点上才需要调整此参数。将此参数设置为大量几乎总是一个坏主意。
参见
MaxSpareServersStartServersMinSpareThreads
