0

我们有一个非常强大的服务器(32 核 cpu,96GB 内存)并且 apache 在 prefork 模式下运行。我们的 apache2.conf 文件包括这样的设置:

<IfModule mpm_prefork_module>
    StartServers         2
    MinSpareServers       5
    MaxSpareServers      20
    ServerLimit      3000
    MaxClients           3000
    MaxRequestsPerChild   1000
</IfModule>

问题是,当我们的网站负载很重时(准确地说是当 apache 进程数达到 1000 时)(或者当设置 StartServers 超过 1000 时),apache2 冻结并需要重新启动。然而仍然有很多 ram,cpu 未得到充分利用,apache 进程数远远超出 maxclients。

我的问题是,我应该怎么做才能让 apache 达到 conf 文件中配置的 maxclients ?

请考虑我们已经使用 /etc/security/limits.conf 将最大打开文件和 nprocs 设置为 5000(ulimit -a 显示这些值已得到充分考虑)。

/var/log/apache2/error.log 中没有显示错误

4

1 回答 1

0

您的 Apache 服务器可能有一个已编译的硬限制。要更改它,您需要重新编译您的网络服务器。默认值为 200000,这应该足够高了 - 但您的 linux 发行版中的软件包可能会有所不同。

我宁愿建议从您的网络服务器获取静态文件服务。在你的 apache 前面放置一个 nginx 或 lighttp 服务器。让它提供静态内容(图像、css、javascript 等)并将动态请求转发到您的 apache。

于 2012-07-04T20:25:54.300 回答