所以我花了两天时间试图解决这个问题。我们在 Amazon EC2 Large 上托管了一个流量相当高的 Magento 网站,同时使用 Apache w/mpm-prefork、Varnish 和 APC 缓存。问题是 CPU 突然飙升至 100% 并且永不停止,增加了负载并导致页面无法使用。每次启动 Apache 时都会发生这种情况,但通常是几分钟后。
首先是服务器统计数据:
- 处理器:64位
- vCPU:2
- 内存(GiB):7.5
目前,我们唯一的补救措施是将实例升级到 XLarge,其性能“还行”(平均负载为 0.6 - 0.9,但仍可用)。不过,根据其他网站,大型实例应该足以以相对较好的性能托管此实例。
我怀疑我们的 prefork 设置可能导致了这种情况。在 Large 实例上,我们有以下设置:
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 4000
</IfModule>
Timeout 120
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5
当升级到 XLarge 时,我们会交换一些更高的预分叉设置:
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 20
MaxSpareServers 40
ServerLimit 150
MaxClients 150
MaxRequestsPerChild 8000
</IfModule>
有人有什么想法可以参考吗?或者有类似设置的人愿意分享吗?
任何帮助都将不胜感激!