Ruby on rails 在EC2上的多个Worker上部署rails应用程序时编译性能

Ruby on rails 在EC2上的多个Worker上部署rails应用程序时编译性能,ruby-on-rails,ruby,amazon-ec2,Ruby On Rails,Ruby,Amazon Ec2,我在EC2(Ubuntu12.04)上的多个中等工作者实例上运行nginx背后的遗留PHP应用程序 我现在想在这些实例上部署一个rails应用程序,我担心该应用程序所依赖的ruby、rails和其他gems的编译时间: rbenv安装1.9.3-p545“7m48.611s”。这是一个目前没有运行任何其他程序的实例。Rails仍在此实例上编译(~20分钟)。我刚开始使用——没有ri和——没有rdoc,这似乎有点帮助 现在,我可以想出几个选项来加快这一过程: 1) 使用OS软件包管理器安装ruby

我在EC2(Ubuntu12.04)上的多个中等工作者实例上运行nginx背后的遗留PHP应用程序

我现在想在这些实例上部署一个rails应用程序,我担心该应用程序所依赖的ruby、rails和其他gems的编译时间:

rbenv安装1.9.3-p545“7m48.611s”。这是一个目前没有运行任何其他程序的实例。Rails仍在此实例上编译(~20分钟)。我刚开始使用——没有ri和——没有rdoc,这似乎有点帮助

现在,我可以想出几个选项来加快这一过程: 1) 使用OS软件包管理器安装ruby和rails,但这将限制我使用apt get存储库中的特定版本

2) 在一个实例上编译,并将二进制文件rsync或scp发送给其他工作人员,在维护此解决方案时可能会产生债务

3) 只需编译ruby、rails和其他gem,并接受在编译运行时工作人员将有100%的负载,这将大大增加启动新实例所需的时间,从目前的3分钟增加到30分钟或更长


谢谢你的帮助

我现在可以自己回答这个问题了:

编译的大部分时间都花在编译文档上。 使用--no ri和--no rdoc将编译时间减少到每个工作线程5分钟左右

最后,我并没有同时对所有员工进行编辑,而是一次对一名员工进行编辑,因此没有中断服务


谢谢你的回复

编译一次,然后构造一个可以重新启动的AWS映像是否可行?您使用的是哪种媒体实例?尽管使用ec2,速度将通过利用线程来实现。创建映像不是一个太坏的想法,尽管这意味着将现有的工作进程迁移到新映像,并在取出旧映像的同时将其添加到现有的负载平衡器。