【问题标题】:Apache Tuning on Server with Nothing Else服务器上的 Apache 调优
【发布时间】:2013-11-12 08:10:18
【问题描述】:
我们有一个网站可能会因为一些显着的曝光(电视)而获得一些显着的流量,我们希望尽最大努力做好准备。我在 AWS 上,并且已将我们的 MySQL 数据库移至其自己的 RDS 实例。
Apache 现在基本上是 Web 服务器上唯一的东西。我分配了一个“大型”实例,具有 7.5GB 的 RAM 和 2 个 CPU。
我担心我对 Apache 配置的无知使我无法充分利用盒子,我特别担心 MinSpareServers、MaxSpareServers 和 StartServers 设置。
我们正在提供一个 cakePHP 应用程序。
每个实例在生成后似乎占用 22MB 内存
感谢您提供的任何见解
【问题讨论】:
标签:
apache
cakephp
amazon-web-services
【解决方案1】:
首先,您应该检查您的 ELB 配置是否可以处理流量峰值(如果您使用的是 ELB)。这里的重点是 ELB 只能每五分钟(大约)扩展 50%,所以它不能很好地处理流量峰值。补充资料here
如果您不使用 ELB,我建议您在服务器前面添加一个负载平衡器,以增加注意事项(我专门使用 HAProxy,因为我们的流量往往会激增)。这样,您可以在出现问题时快速添加新服务器。
回到您关于 Apache 调优的问题,您应该确保您使用了计算机上所有可用的 RAM。这意味着设置一个简单的负载测试(使用 siege 或 apache ab)并提高 MaxSpareServers 和 MaxClients 设置,直到您的 EC2 实例饱和。另外,请确保您运行的是 MPM Worker 而不是 Prefork,我已经看到了更好的结果。鉴于机器只有两个 CPU,拥有大量并发 apache 进程可能无济于事,因为 CPU 可能会饱和。
性能会因您实际运行的应用程序而有很大差异,并且您可能会遇到其他瓶颈,例如 RDS 实例,但正确缓存的解决方案应该在您提到的服务器上产生 10-40k RPM。
扩展通常需要测试和优化,但我希望这会有所帮助。