Lot*_*her 5 httpd.conf apache-2.2
在我的错误日志中,我看到:
server reached MaxClients setting, consider raising the MaxClients setting
Run Code Online (Sandbox Code Playgroud)
我的 MaxClients 设置是 150。但是,当我计算出似乎是最佳 MaxClients 设置时,我想出了:
Mem used by 1 Apache process = 16
Mem available to Apache = 197
MaxClients = 12 (197/16)
Run Code Online (Sandbox Code Playgroud)
那么我应该将 MaxClients 降低到 12,因为我的计算表明这是我可用的所有 RAM 还是我应该按照错误日志的建议提高限制(或者我的计算是否毫无价值,因为我误解了一些东西)?
如果您正在运行 prefork Apache,请考虑在 httpd.conf 中设置 KeepAlive Off。Apache 将在完成每个连接后关闭每个连接,而不是每个持有不活动连接的孩子打开。这将减少服务所需的整体连接和子进程。它确实增加了一些额外的时间,因为每个新请求都必须与您的服务器重新协商,而不是重用打开的连接。
(编辑)哦,是的问题。我会单独留下 MaxClients 或根据您拥有的 RAM 设置它。假设您有足够多的 RAM,经验法则是假设您的后端不是很慢的 CPU 内核数量的 2-4 倍,否则使用 RAM 作为限制因素。但是,我认为关闭 KeepAlive 会将您需要的孩子数量降低到相当正常的水平,并且您将不再达到限制。
(edit2) 现在这里变得棘手了。如果您的 Apache 服务器是主要运行 PHP、Ruby 等代码并处理从各种后端或磁盘获取到呈现页面的数据的应用程序服务器,则 2-4x 规则有效。通常,如果未缓存的页面很重,或者每个内核有 4 个页面查看,则每个页面查看将消耗 250 毫秒的 CPU。如果你有一个独立的服务器,你将能够处理更多的请求,因为它们中的很多都是小图像、css、js 等,它们通常会由应用服务器的另一组服务器提供。我假设您有一台服务器,因此将整个事情放在一边可能是您最好的选择。
在我的上一份工作中,我们使用 50 个 MaxClients 和 KeepAlive Off 运行了 8 核/8GB 前端机器,效果很好。在某些情况下,将 MaxClients 设置为 100 会得到稍微好一点的基准测试,但是页面生成的整体延迟会增加,因为大部分时间我们都在各种后端上阻塞或开始缺乏 CPU。
归档时间: |
|
查看次数: |
1654 次 |
最近记录: |