有了MPM模块,Apache可以同时处理大量的并发连接。 MPM将网络连接相关的处理独立成为模块的形式,这样不同的平台就可以使用不同的并发模型,从而达到最优的效果。 空闲子进程:是指没有正在处理请求的子进程。
1、prefork.c模块(一个非线程型的、预派生的MPM)
复制代码代码示例:
ServerLimit 20000
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 1000 MaxRequestsPerChild 0 ServerLimit 2000
//默认的MaxClient最大是256个线程,假如想配置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。假如需要更大,则必须编译apache,此前都是无需重新编译Apache。
StartServers 5
//指定服务器启动时建立的子进程数量,prefork默认为5。 MinSpareServers 5 //指定空闲子进程的最小数量,默认为5。假如当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。 MaxSpareServers 10 // 配置空闲子进程的最大数量,默认为10。假如当前有超过MaxSpareServers数量 的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。假如您将该指令的值配置为比MinSpareServers小,Apache将会自动 将其修改成”MinSpareServers+1″。 MaxClients 256 //限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,您必须同时增大ServerLimit 。 MaxRequestsPerChild 10000 //每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。假如MaxRequestsPerChild为”0″,子进程将永远不会结束。
将MaxRequestsPerChild配置成非零值有两个好处:
ServerLimit 50
ThreadLimit 200 StartServers 5 MaxClients 5000 MinSpareThreads 25 MaxSpareThreads 500 ThreadsPerChild 100 MaxRequestsPerChild 0 ServerLimit 16 //服务器允许配置的进程数上限。这个指令和ThreadLimit结合使用配置了MaxClients最大允许配置的数值。任何在重启期间对这个指令的改变都将被忽略,但对MaxClients的修改却会生效。 ThreadLimit 64 //每个子进程可配置的线程数上限。这个指令配置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是”64″. StartServers 3 //服务器启动时建立的子进程数,默认值是”3″。 MinSpareThreads 75 //最小空闲线程数,默认值是”75″。这个MPM将基于整个服务器监控空闲线程数。假如服务器中总的空闲线程数太少,子进程将产生新的空闲线程。 MaxSpareThreads 250 // 配置最大空闲线程数。默认值是”250″。这个MPM将基于整个服务器监控空闲线程数。假如服 务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正您配 置的值:worker需要其大于等于 MinSpareThreads加上ThreadsPerChild的和 MaxClients 400 //允许同时伺服的最大接入请求数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候 队列。默认值是”400″,16 (ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,您必须同时增加 ServerLimit的值。 ThreadsPerChild 25 //每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。 MaxRequestsPerChild 0 //配置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。假如MaxRequestsPerChild为”0″,子进程将永远不会结束。
将MaxRequestsPerChild配置成非零值有两个好处:
注意:
工作方式: Apache总是试图维持一个备 用(spare)或是空闲的服务线程池。这样,客户端无须等待新线程或新进程的建立即可得到处理。在Unix中,为了能够绑定80端口,父进程一般都是以 root身份启动,随后,Apache以较低权限的用户建立子进程和线程。User和Group指令用于配置Apache子进程的权限。
虽然子进程必须对 其提供的内容拥有读权限,但应该尽可能给予他较少的特权。
公式:
复制代码代码示例:
ThreadLimit >= ThreadsPerChild
MaxClients = MinSpareThreads+ThreadsPerChild
硬限制:
注意: |