2

私のアプリは unicorn を搭載した Heroku で実行され、sucker_punchを使用して、Web UI を遅くすることなく、バックグラウンドで少量のメールを送信します。これは数週間かなりうまく機能しています。

unicorn の設定を Heroku 推奨の設定に変更しました。推奨構成には、ユニコーン プロセス数のオプションが含まれており、プロセス数を 2 から 3 に増やしました。

どうやらそれは多すぎたようです。sucker_punch ジョブの実行が停止しました。キューに入れられたことを示すログ メッセージと、処理を開始したことを示すメッセージがあります。ログはそれらがキューに入れられていることを示していますが、処理は開始されません。

私の理論では、ユニコーンを 2 つから 3 つに増やして記憶を超えたということです。

問題を示すメッセージはどこにも見つかりませんでした。

Q1: どこかにエラー メッセージが表示されますか? 「sucker_punch を開始しようとしています -- おっと、メモリが足りません」のようなものですか?

Q2: 今後、このような障害が発生した場合の通知方法について何か提案があれば教えてください。

ありがとう。

4

1 に答える 1

1

実際に dyno メモリを超えている場合は、ログに R14 または R15 エラーが見つかるはずです。https://devcenter.heroku.com/articles/error-codes#r14-memory-quota-exceededを参照してください

ただし、これらのエラーが見つからないことを考えると、より可能性の高い問題はperform、吸盤パンチ ワーカーのメソッド内の何かが例外をスローしているということです。ライブラリがすべての例外を静かに飲み込んでいるように見えるため、吸盤パンチタスクをデバッグするのが面倒であることがわかりました。タスクをインスタンス化し、Rails コンソールから perform を呼び出して、想定どおりに動作することを確認してください。

たとえば、例外を発生させずにこれを実行できるはずです。

task = YourTask.new
task.perform :something, 55
于 2013-06-20T17:10:38.953 に答える