这个MaxClients值到底调到多少合适呢?

最重要的是将 MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。 MaxRequestsPerChild指令控制服务器杀死旧进程产生新进程的频率。

我们选用的Apache一般都是mpm(Multi -Processing Modules,多道处理模块),MPM是Apache的核心,它的作用是管理网络连接、调度请求。

Apache2.0中MPM分为3种:perfork、worker、event,如下截图可知,当前Apache选用的是perfork。

 

QQ20150827-2@2x

为什么选用perfork这种模式呢,因为他采用了进程管理,可以性能和兼容性得到了保证,其他的模式有兼容性或者不够稳定之类的问题。

进程数的最大值由MaxClients控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients ≤ ServerLimit ≤ 20000。

当Apache被启动时,控制进程会根据StartServers自动创建相应的进程数,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
当空闲进程数小于MinSpareServers, 那么父进程将会以大约每秒2(n次方,n=0,1..)个的速度新建进程。
当空闲进程数大于MaxSpareServers, 那么父进程(控制进程)就把多余的空闲进程杀掉,释放资源。