<-
Apache HTTP 服务器 2.4 > Apache MPM工作者

Apache MPM工作者

描述:实现混合多线程多进程Web服务器的多进程模块
状态:MPM
模块标识符:mpm_worker_module
源文件:工人

摘要

该多处理模块(MPM)实现了混合多进程多线程服务器。通过使用线程来处理请求,与基于进程的服务器相比,它能够以更少的系统资源来处理大量的请求。但是,它通过保持多个进程可用(每个进程都有多个线程)来保留基于进程的服务器的大部分稳定性。

用于控制此MPM的最重要的指令是 ThreadsPerChild,它控制每个子进程部署的线程数 MaxRequestWorkers,而则控制可以启动的最大线程总数。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

怎么运行的

单个控制进程(父进程)负责启动子进程。每个子进程都会按照指令中的指定创建固定数量的服务器线程ThreadsPerChild,以及一个侦听器线程,该线程侦听连接并将连接到达时将其传递给服务器线程进行处理。

Apache HTTP Server始终尝试维护一个备用服务器或空闲服务器线程池,它们随时准备服务传入的请求。这样,客户端无需等待新线程或进程的创建即可为其请求提供服务。初始启动的进程数由StartServers 指令设置。在运行期间,服务器会评估所有进程中空闲线程的总数,并分叉或终止进程,以将该数量保持在MinSpareThreads和所指定的范围内。MaxSpareThreads。由于此过程非常自我调节,因此几乎没有必要从这些指令的默认值修改它们。可以同时服务的最大客户端数(即,所有进程中的最大线程总数)由MaxRequestWorkers指令确定 。活动子进程的最大数量由MaxRequestWorkers 指令除以 ThreadsPerChild指令确定。

有两个指令对活动的子进程数和子进程中的服务器线程数设置了硬性限制,并且只能通过完全停止服务器然后再次启动服务器来更改。 ServerLimit 是对活动子进程数量的硬限制,并且必须大于或等于 MaxRequestWorkers 指令除以 ThreadsPerChild指令。 ThreadLimit是服务器线程数的硬限制,并且必须大于或等于ThreadsPerChild指令。

除了这组活动的子进程之外,可能还有其他子进程正在终止,但是其中至少有一个服务器线程仍在处理现有的客户端连接。MaxRequestWorkers尽管可以预期实际数目会小得多,但最多可能存在终止过程。可以通过禁用单个子进程的终止来避免此行为,这可以通过以下方式实现:

workerMPM中进程线程控件的典型配置如下所示:

ServerLimit         16
StartServers         2
MaxRequestWorkers  150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25

root 为了绑定到端口80,通常在Unix下启动父进程,而子进程和线程则由服务器以特权较低的用户身份启动。在UserGroup指令用于设置Apache HTTP服务器的子进程的权限。子进程必须能够读取将要提供的所有内容,但应具有尽可能少的特权。此外,除非suexec使用了这些指令,否则这些指令还将设置CGI脚本将继承的特权。

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

mpm-accept当遇到雷电群问题时(通常,当有多个侦听套接字时),此MPM使用互斥锁来序列化对传入连接的访问​​。可以使用Mutex伪指令配置此互斥锁的实现方面 。在性能提示 文档有关于这个互斥的附加信息。

可用语言: de  |  zh  |  fr  |  ja  |  TR 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。