尝试降低 apache 2 进程的数量

尝试降低 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 不要打开那么多进程?

谢谢

答案1

您已经告诉 Apache,您希望能够同时为 500 个客户端提供服务,并且对客户端进程池的数量设置 500 的硬性限制。

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

由于您使用的是预分叉服务器,每个进程仅处理单个请求线程,因此 Apache 需要维护大量休眠进程才能处理您指定的同时客户端数量。这些进程会占用大量内存。

您可以切换到线程 MPM 模型,降低 MaxClients 的值或增加 RAM 量。请参阅两者http://httpd.apache.org/docs/2.0/mod/prefork.htmlhttp://httpd.apache.org/docs/2.0/mod/mpm_common.html

相关内容