0

我在Elastic Beanstalk上部署了一个Rails 3应用程序,现在已经接近2年了。大多数情况下,我没有任何问题;然而,我最近升级到了其新的Ruby配置之一(运行Ruby 2.1(Passenger Standalone)的64位Amazon Linux 2014.09 v1.0.9),并且我一直在争论几天,其中一个更多的Ruby进程将消耗CPU - 到我的网站无响应的地步。我正在使用一个m3.medium实例,但后来我转移到了m3.large,它只花了我一些时间手动登录到EC2实例并杀死逃跑进程(es)。我会说这种情况每天发生一次或两次。Elastic Beanstalk Ruby进程消耗CPU

我必须移动到新的Ruby配置时,是有问题的唯一的事情,我必须添加以下到我的.ebextensions文件夹,以便引入nokogiri可以安装(W /包安装)......

commands: 
    build_nokogiri: 
    command: "bundle config build.nokogiri --use-system-libraries" 

我不认为这会导致这些悬挂过程,但我可能是错的。我也不想排除一些与Elastic Beanstalk升级无关的东西,但是我不能解决导致此问题的任何其他重大更改。我意识到这不是一个很大的信息,但有没有人遇到类似的东西?任何人都有将这些流程追溯到根源的建议吗?

在此先感谢!

回答

0

既然你升级了你的beanstalk配置,我想你也升级了Ruby/Rails版本。这碰上了所有的宝石版本。性能问题可能源于这些更改之一(而不是硬件更改)。
因此,这使我们进入了RoR性能故障排除的领域:
1.检查beanstalk日志是否有错误。如果幸运的话,您会以这种方式找到配置问题。给它一个小时。 2.假设在那里,尝试在本地主机上设置完全相同的版本(乘客+红宝石2.1 +宝石版本)。如果你幸运的话,你将会目睹相同的缓慢并能够进行调试。
3.如果您想直接进行生产调试,我建议您安装newrelic(或任何其他应用程序监控工具),然后深入了解其仪表板缓慢的细节。我发现它非常有用。

+0

感谢您的反馈,Tal。今天早上我发现了这篇文章 - http://blog.newrelic.com/2013/04/29/debugging-stuck-ruby-processes-what-to-do-before-you-kill-9/。下一次我SSH进来,看到挂起的过程(ES),我会给gdb一试。 – ajporterfield 2014-12-08 14:40:03