处事器答允设置的历程数上限。这个指令和ThreadLimit团结利用配置了MaxClients最大答允设置的数值。任安在重启期间对这个指令的改变都将被忽略,但对MaxClients的修改却会生效。
ü ThreadLimit64
每个子历程可设置的线程数上限。这个指令配置了每个子历程可设置的线程数ThreadsPerChild上限。任安在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是"64".
ü StartServers3
处事器启动时成立的子历程数,默认值是"3"。
ü MinSpareThreads75
最小空闲线程数,默认值是"75"。这个MPM将基于整个处事器监督空闲线程数。假如处事器中总的空闲线程数太少,子历程将发生新的空闲线程。
ü MaxSpareThreads250
配置最大空闲线程数。默认值是"250"。这个MPM将基于整个处事器监督空闲线程数。假如处事器中总的空闲线程数太多,子历程将杀死多余的空闲线程。MaxSpareThreads的取值范畴是有限制的。Apache将凭据如下限制自动批改你配置的值:worker要求其大于便是MinSpareThreads加上ThreadsPerChild的和
ü MaxClients400
答允同时伺服的最大接入请求数量(最大线程数量)。任何高出MaxClients限制的请求都将进入等待行列。默认值是"400",16(ServerLimit)乘以25(ThreadsPerChild)的功效。因此要增加MaxClients的时候,你必需同时增加ServerLimit的值。
ü ThreadsPerChild25
每个子历程成立的常驻的执行线程数。默认值是25。子历程在启动时成立这些线程后就不再成立新的线程了。
ü MaxRequestsPerChild 0
配置每个子历程在其保留期内答允伺服的最大请求数量。达到MaxRequestsPerChild的限制后,子历程将会竣事。假如MaxRequestsPerChild为"0",子历程将永远不会竣事。
将MaxRequestsPerChild配置成非零值有两个长处:
1.可以防备(偶尔的)内存泄漏无限举办,从而耗尽内存。
2.给历程一个有限寿命,从而有助于当处事器负载减轻的时候淘汰勾当历程的数量。
留意
对付KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子历程限制最大链接数量的行为。
Worker.c的事情方法:
每个历程可以拥有的线程数量是牢靠的。处事器会按照负载环境增加或淘汰历程数量。一个单独的节制历程(父历程)认真子历程的成立。每个子历程可以成立ThreadsPerChild数量的处事线程和一个监听线程,该监听线程监听接入请求并将其通报给处事线程处理惩罚和应答。Apache老是试图维持一个备用(spare)或是空闲的处事线程池。这样,客户端无须期待新线程或新历程的成当即可得处处理惩罚。在Unix中,为了可以或许绑定80端口,父历程一般都是以root身份启动,随后,Apache以较低权限的用户成立子历程和线程。User和Group指令用于配置Apache子历程的权限。固然子历程必需对其提供的内容拥有读权限,但应该尽大概给以它较少的特权。别的,除非利用了suexec,不然,这些指令配置的权限将被CGI剧本所担任。
公式:
ThreadLimit>= ThreadsPerChild
MaxClients <= ServerLimit * ThreadsPerChild 必需是ThreadsPerChild的倍数
MaxSpareThreads>= MinSpareThreads+ThreadsPerChild
硬限制:
ServerLimi和ThreadLimit这两个指令抉择了勾当子历程数量和每个子历程中线程数量的硬限制。要想改变这个硬限制必需完全遏制处事器然后再启动处事器(直接重启是不可的)。
Apache在编译ServerLimit时内部有一个硬性的限制,你不能逾越这个限制。
preforkMPM最大为"ServerLimit200000"
其它MPM(包罗work MPM)最大为"ServerLimit 20000
Apache在编译ThreadLimit时内部有一个硬性的限制,你不能逾越这个限制。
mpm_winnt是"ThreadLimit 15000"
其它MPM(包罗work prefork)为"ThreadLimit 20000
留意