2013-05-14 102 views
2

我的應用程序在Heroku上運行的獨角獸,並使用sucker_punch在後臺發送少量電子郵件而不會減慢Web UI。這幾周來一直工作得很好。Heroku,sucker_punch的明顯無聲失敗

我將獨角獸配置更改爲Heroku推薦配置。推薦的配置 包括一個獨角獸進程數的選項,我將進程數從2增加到3.

顯然這太多了。 sucker_punch作業停止運行。我有日誌消息表明它們何時排隊,並且有消息指示它們何時開始處理。日誌顯示他們正在排隊,但處理從不開始。

我的理論是,我從2個到3個獨角獸,超過了記憶。

我沒有在任何地方找到指示問題的消息。

問題1:我應該期望在某處找到失敗的消息嗎?像「試圖啓動sucker_punch - 哎呀,沒有足夠的內存」?問題2:關於如何在未來可以通知我這樣的失敗的任何建議。

謝謝。

回答

1

如果你確實超出了dyno內存,你應該在你的日誌中發現R14或R15錯誤。請參閱https://devcenter.heroku.com/articles/error-codes#r14-memory-quota-exceeded

但是,考慮到您沒有發現這些錯誤,更可能的問題是您的吸盤衝牀工人的perform方法中的某個內容正在拋出異常。我發現sucker punch任務是一個很難調試的問題,因爲它看起來像lib會默默吞下所有異常。嘗試實例化你的任務,並從Rails控制檯調用它的執行,以確保它的行爲像你期望的那樣。

例如,你應該能夠做到這一點,而不會導致異常:

task = YourTask.new 
task.perform :something, 55