Apache MPM worker

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(apache,多线程,unix,脚本,cgi)