Apache 2.0手册中文版翻译项目 [本文译者: kajaa * ]

项目说明 | 项目进度 | 项目讨论区 | Apache手册中文版

 


worker - Apache HTTP服务器
<-
Apache主站 > HTTP服务器 > 文档 > 2.0版本 > 模块索引

Apache MPM worker

说明:使网络服务器支持多线程多进程的多道处理模块
状态:MPM
模块名:mpm_worker_module
源文件:worker.c

概要

此多道处理模块(MPM)使网络服务器支持多线程多进程。 由于使用线程来处理请求,所以,可以处理巨量请求,而系统资源的开销小于基于进程的服务器。 但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的服务器的稳定性。

控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的ThreadsPerChild指令,和控制允许建立的进程总数的MaxClients

指令索引

主题

参见

top

它是如何运作的

每个进程可以拥有的线程数量是固定的。 服务器会根据负载情况做增加或减少进程数量的调整。

单个控制进程负责子进程的建立。每个子进程可以建立由ThreadsPerChild指定的固定数量的线程。 然后,由独立的线程监听并处理到来的连接。

Apache总是试图维持一个备用的或者说空闲的服务线程池。 如此,客户端无须等待线程或进程的建立即可得到处理。 最初建立进程的数量由StartServers指令所决定。 其后,Apache检测所有进程中空闲线程的总数,并新建或结束进程使总数维持在MinSpareThreadsMaxSpareThreads所指定的范围以内。 由于这个过程是自动调整的,几乎没有必要修改这些指令的缺省值。 同时可以得到处理的客户端的最大数量取决于MaxClients指令,而进程建立的最大数量取决于ServerLimit指令。ServerLimit乘以ThreadsPerChild必须大于等于MaxClients

worker MPM 中进程-线程控制的典型配置如下:

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

在Unix中,为了能够绑定端口80,父进程一般都是以root身份启动的, 其后,Apache以较低权限的用户建立子进程和线程。UserGroup指令用于设置Apache子过程的权限。 虽然子进程必须对其提供的内容拥有读权限,但应该尽可能给予它较少的特权。 另外,除非使用了suexec, 否则,这些指令设置的权限将被CGI脚本所继承。

MaxRequestsPerChild 指令用于控制服务器建立和结束进程的频率。

 


项目维护者: kajaa [本文译者: kajaa * ]

项目说明 | 项目进度 | 项目讨论区 | Apache手册中文版