试图降低apache 2进程的数量

我在Debian 6 LAMP与Apache mpm_prefork

我有

Timeout 20 KeepAlive On MaxKeepAliveRequests 80 KeepAliveTimeout 2 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 500 MaxClients 500 MaxRequestsPerChild 1500 </IfModule> 

与4GB的RAM。 问题是Apache2启动了太多的进程。 每当我做top我看到大部分时间只有1运行,而睡眠的apache2进程数随着时间增长(现在在437个进程和计数)

我可以知道为什么apache2启动新的进程,而不是使用已打开的? 我怎么能告诉Apache不要打开这么多的过程?

谢谢

您已经告诉Apache,您希望能够同时为500个客户端提供服务,并对500个客户端进程池有严格的限制。

当Apache收到请求时,它将开始扩展其进程池,直到达到您的限制。

由于您使用的是预处理服务器,因此每个进程只处理一个请求线程,所以Apache需要维护大量的睡眠进程以处理您指定的并发客户端的数量。 这些吃了很多的记忆。

您可以切换到线程MPM模型,减lessMaxClients的值或增加RAM的数量。 请参阅http://httpd.apache.org/docs/2.0/mod/prefork.html和http://httpd.apache.org/docs/2.0/mod/mpm_common.html