前言:这是不是“如何设置 StartServers” 的问题。
我有一个运行良好的 Web 服务器,已经运行多年,上周我们开始使用 CloudFlare 来帮助减少探测和 DDOS 活动。从那时起,我收到的 Apache 错误日志中充满了经典的“服务器似乎很忙”调整 StartServers 等消息。我认为这是因为 CloudFlare 在后台进行了大量连接 - 可能是为了缓存之类的。所以我慢慢开始增加 StartServers、MinSpareServers 等的数量,但无论我将值设置为多少,服务器仍然会报告该错误。我已确保此服务器确实在运行 mpm_prefork,并且每次更改值时我都会重新启动服务器。这些是我在 apache.cfg 文件中拥有的相关值:
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 100
MinSpareServers 100
MaxSpareServers 150
MaxClients 1000
MaxRequestsPerChild 4000
</IfModule>
在记录错误时,服务器上的负载和流量似乎很少。使用 netstat 时,我看到峰值时可能有 70 个并发连接,服务器仅使用 8GB RAM 中的 1.5GB,CPU 处于闲置状态,磁盘和网络 IO 较低。根据
ps aux|grep apache2
无论如何,服务器响应和页面加载时间似乎都很好。
我的问题是,为什么我得到的是服务器似乎很忙的错误,而我的值都没有小于 100,但我通常只看到 70 个连接?似乎 Apache 忽略了 apache2.conf 文件中的值。