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