【问题标题】:cannot launch more than 1000 apache processes though maxclients and serverlimits is set to 3000尽管 maxclients 和 serverlimits 设置为 3000,但无法启动超过 1000 个 apache 进程
【发布时间】:2012-07-04 05:23:50
【问题描述】:

我们有一个非常强大的服务器(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会死机,需要重新启动。然而仍然有很多内存,cpu 未充分利用,apache 进程数远远超过 maxclients。

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

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

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

【问题讨论】:

    标签: apache process limit


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢您的回答,顺便问一下,您知道编译时要更改的变量的名称吗?为了避免这个问题,我切换到 mod worker+fpm+fast cgi,它限制了进程数并提高了速度,减少了 cpu 和 ram。
    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    相关资源
    最近更新 更多