扩展 Ruby on Rails 应用程序服务器的第一步

扩展 Ruby on Rails 应用程序服务器的第一步

我在配备 8GB RAM 和 Ubuntu 的双核 AMD Athlon 4450e 服务器上运行 RoR Web 应用程序。

它运行良好,每分钟的动态请求数最高可达 320 个,它还能处理所有资产,包括提供一些较大的视频文件。

我在主机上运行了带有 Passenger 的 Apache 和 MySQL。

性能仍然非常稳定,但我看到在较高负载期间平均负载开始超过 1,并且 CPU 负载上升到 40% 或 50%。

我可以买得起一台额外的电脑,并且配备 8GB RAM 的四核系统符合我的预算。

我是否应该将当前的盒子变成数据库服务器,并将四核放在它前面作为 Web 服务器?

我是否最好让四核处理器同时作为数据库服务器和 Web 服务器运行,并让现有的双核处理器作为另一个 Web 服务器运行?

我还应该考虑其他服务器布局吗?

以下是负载下的服务器快照:

服务器负载 http://img.skitch.com/20100208-jhk11btcb43yg4mhd75ecinqqr.png

谢谢,

—蒂姆

答案1

它没坏,所以不要修理它。

作为一般的后续步骤建议,您可以/应该将静态文件分离到 nginx 或 cdn,然后花一些时间分析 mysql 查询以查看索引或细微调整可以提供帮助的地方。

使用运行 rails 的双核机器,您应该能够轻松维持 2 - 3 的平均负载,而不会对用户产生任何影响。

答案2

首先,您需要找出导致 CPU 负载的原因——数据库,还是 apache/RoR 应用程序。

我建议你把四核机器用作数据库服务器,把双核机器用作网络服务器。如果你发现网络服务器有更多问题,你可以随时添加另一个具有负载平衡功能的服务器。

但再次强调,首先要检查当前负载是多少。

答案3

由于升级非常重要,我会在新计算机上设置所有设置,并使用旧计算机作为测试服务器。

如果新服务器也不够用,您可以在旧服务器上设置 RoR 应用并使用 nginx 进行负载平衡。Mysql 复制也可能是一个选项,至少对于备份值而言。

相关内容