web-dev-qa-db-ja.com

Sidekiqジョブがエンキューでスタックする

Sidekiqは開発モードで完全に機能しています。実稼働環境で使用しようとしているので、すべてのジョブはエンキューに座っているだけで、実行されていません。この問題を解決する方法について、誰かが正しい方向に向けることができますか?

41
groffcole

Sidekiqプロセスが実際に実行されているかどうかを確認してください。

ps aux | grep sidekiq

そうでない場合は、まずフォアグラウンドでsidekiqを実行し、出力を確認してください。

bundle exec sidekiq -e production
40
cthulhu

私にとって多くの場合、それはconfig/sidekiq.ymlでこの特定のサービスのキューを適切に宣言していないためです。

5
paascal

この回答は関連性があります: Sidekiq not processing queue Sidekiqが設定ファイルについて通知されていない場合(本番環境で別の呪文が必要な場合があります)、正しいキューを使用していない可能性があります。

3
ChrisPhoenix

Rails Sidkiqジョブが 'enqueued'から移動しなかった理由を解明しようとしてこのページを終了したので、すべてに頭を上げます。

  1. 端末でsidekiqコンソールを確認します
  2. ほぼ1時間混乱した私の問題...ああ...コードに'byebug'ブレークポイントがあり、バックグラウンドジョブに入れるのは馬鹿げています。これはあなたの仕事を完全に汚します。明らかに...そのブレークポイントをそこに置くつもりはありませんでした。私は誓います :)
2
slindsey3000

私の解決策:

1.)アプリの Sidekiq Web UI を確認します(ジョブがエンキューされた状態になっているという事実を確認できます)。

2.)失敗したジョブを手動で再試行する

3.)Sidekiqを実行しているサーバーのログを検査します。

(通常、ステージングでこれを行う場合、これはログが置かれる場所です)

tail -f /var/www/yourappname/current/log/staging.log

通常、これはSidekiqがエンキューされたジョブを処理できない理由のより詳細なエラーメッセージが表示される場所です。今回のケースでは、デプロイメント構成に固有の誤ったエンドポイントを指す環境変数がありました。

1
Joseph Combs

capistrano-sidekiq gemを使用して問題を解決しました

0
Shimaa Marzouk