Apache配置文件中有非常多的参数,绝大多数Apache都是运行于mpm_prefork模式下,而对prefork参数的调试至关重要。prefork模式对每个不同的请求使用不同的进程,因此能够避免非常多的安全问题。它具有强大的自我调节能力,能够比较智能的适应不同压力的访问。

调整性能参数并非纸上谈兵,需要在调整的每一步都对服务器进行负载压力测试,以确保在服务器稳定的基础下实现最高的性能。

参数解释

Apache的MPM配置文件主要有如下几段:

1 <IfModule mpm_prefork_module>
2 StartServers 10
3 MinSpareServers 5
4 MaxSpareServers 15
5 MaxClients 200
6 MaxRequestsPerChild 5000
7 </IfModule>

其中MaxClients、MinSpareServers与MaxSpareServers是关键。

MaxClients决定了Apache最多创建多少个子进程用来处理请求。进一步举例解释,如果这个参数设置为200(如图),则当Apache主进程收到大量请求时,会创建最多200个进程。而这200个进程用于处理这些请求。因此,无论有多少个请求,也只会有200个进程并行处理。

MaxSpareServers顾名思义是“最多空闲进程”,注意“空闲”二字。接上一个例子,当这200个进程处理完了所有的请求后,这些进程便都“空闲”了。此时Apache便会杀死一些进程以释放资源。那么,如上图设置,Apache会保留最多15个空闲的进程;

MinSpareServers是“最少空闲进程”。当Apache启动时,如果空闲的进程少于5个,则会以一定频率创建新的进程,直到满足这个数值(5)。这样设计的目的是为了让Apache更迅速的应付潜在的访问高峰。

StartServers表示Apache在启动的时候创建的进程数量。如果访问压力很大,那么进程数会逐步增加,直到达到MaxClients设置的数量。

MaxRequestPerChild表示每个进程处理的最大请求数。当任何一个子进程处理的请求数达到MaxRequestPerChild后,便会自杀。如果MaxRequestPerChild设置为0,表示不限(即永远不自杀)。这