我们有一个非常强大的服务器(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 中没有显示错误