附加配置文件httpd-mpm.conf中的全局参数

admin  2016-07-10 20:29   Hits: 

Apache MPM worker多路处理模块MPM使网络服务器支持混合的多线程多进程,由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM,但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性,控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的ThreadsPerChild指令,和控制允许建立的总线程数的MaxClient指令,常用指令如下:
 
1、StartServer
设置了服务器启动时建立的子进程数量,因为子进程数量动态的取决于负载的轻重,一般没必要调整这个参数
 
2、MinSpareServer
设置空闲子进程的最小数量,所谓空闲子进程是指没有正在处理请求的子进程,如果当前空闲子进程数少于MinSpareServer,那么服务器将以最大每秒一个的速度产生新的子进程,只有在非常繁忙机器上才需要调整这个参数,将此参数设的太大通常是一个坏主意
 
3、MaxSpareServer
设置空闲子进程的最大数量,所谓空闲子进程是指没有正在处理请求的子进程,如果当前空闲子进程数超出MaxSpareServer数量的空闲子进程,那么父进程将杀死多余的子进程,只有在非常繁忙机器上才需要调整这个参数,将此参数设的太大通常是一个坏主意,如果你将该指令的值设置为比MinSpareServer小,Apache将自动将其修改为MinSpareServer+1;
 
4、MaxClients
设置了同一时间服务器允许的最大接入请求数量,任何超出MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止,一旦一个链接被释放,队列中的请求将得到服务
对于非线程型的MPM,MaxClients表示可以用于伺服客户端请求的最大子进程数量,默认值是256,要增大这个值,你必须要同时增大ServerLimit,对于线程型或者混合型MPM,MaxClients表示可以用于伺服客户端请求的最大线程数量,线程型的beos的默认值时50,对于混合型的MPM默认值是16乘以25,因此要将MaxClients增加到超过16个进程才能提供的时候,必须同时增加ServerLimit的值。
 
5、MaxRequestSperChild
MaxRequestSperChild指令设置每个子进程在其生存期内允许的最大请求数量,到达MaxRequestSperChild限制后,子进程会结束,如果MaxRequestSperChild为0,子进程将永不结束。不同默认值在mpm_ne.tware和mpm_winnt上的默认值是0,将MaxRequestSperChild设置成非零值有两个好处:
可以防止内存泄漏;给进程一个寿命,从而有助于当服务器负载减轻的时候减少活动进程数量
对于KeepAlive链接,只有第一个请求会被计数,事实上,它改变了每个子进程限制最大链接数量的行为。
 
6、ThreadsperChild
这个指令设置了每个子进程建立的线程数,子进程在启动时建立这些线程后就不再建立新的线程,如果使用一个类似于mpm_winnt只有一个子进程的MPM,这个数值要足够大,以便可以处理可能的请求高峰,如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰,对于mpm_winnt,ThreadsPerChild的默认值是64,对于其他MPM是25
 
7、ThreadLimit
这个指令设置了每个子进程可配置的线程数ThreadsperChild上限,任何在重启期间对这个指令的改变都被忽略,但对ThreadsperChild的修改却会生效。
使用这个指令时要当心,如果将ThreadLimit设置成一个高出ThreadsperChild实际需要很多的值,将会有过多的共享内存被分配,如果将ThreadLimit和ThreadsperChild设置成超过系统的处理能力,Apache将无法启动,或者系统将变得不稳定,该指令的值应当和ThreadsperChild可能达到的最大值保持一致,对于mpm_winnt,ThreadLimit的默认值是1920,对于其他MPM这个值是64
这里要注意,Apache在编译时内部有一个硬性的限制 ThreadLimit 20000,对于mpm_winnt是ThreadLimit 15000
 
8、ServerLimit
对于preforkMPM,这个指令设置了MaxClients最大允许配置的数值,对于worderMPM,这个指令和ThreadLimit结合使用设置了MaxClients最大允许配置的数值,任何在重启期间对这个指令的改变都将被忽略,但对于MaxClients的修改会生效
使用这个指令要当心,如果将ServerLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被分配,如果将ServerLimit和MaxClients设置成超过系统的处理能力,服务器将无法启动
对于preforkMPM只有在你需要将MaxClients设置成高于默认256的时候才需要使用这个值,要将此指令的值保持和MaxClients一样。
对于workerMPM,只有在你需要MaxClients和ThreadsperChild设置成需要超过默认值16个子进程的时候才需要使用这个指令,不要将该指令的值设置比MaxClients和ThreadsperChild需要的子进程数高
这里要注意,APACHE编译时内部有一个硬限制 ServerLimit 20000 对于mpm_winnt是ThreadLimit 15000,不能超过这个限制
上一篇:附加配置文件httpd-default.conf中的全局参数
下一篇:Apache服务器中使用配置段(容器)