Sidekiq、elasticacheを使用、discourseアップグレード以来キューに入れられたジョブを処理していません

最近、Ubuntu EC2 上で動作している Discourse の Docker インスタンスをアップグレードしました。アップグレードには launcher rebuild を使用しました。以前はバージョン 2.4.0 を使用していましたが、2.6.0.beta1 にアップグレードし(その後、2.6.0.beta2 にも再度アップグレードしました)。Redis の代わりに Elasticache を使用しており、アップグレード前は問題なく動作していました。アップグレード直後、Sidekiq がメールを送信していないことに気づきました。アプリを再起動し、キャッシュをクリアしましたが、一時的に動作しているように見えたものの、それは誤検知でした。

不具合の兆候

  • Sidekiq はダッシュボードの表示から見て、比較的安定したペースでジョブをスケジューリングし、キューに追加していますが、実際に実行されていません
  • 管理画面で Sidekiq が実行されていないとの警告が表示されています
  • ログには複数の Sidekiq heartbeat test failed, restarting の記録があります
  • もちろん、ユーザーへのメールが送信されていません

試した対応(ここや Stack Overflow の投稿を参照して)

  • discourse-doctor を使用してテストメールの送信に成功し、その部分のフローが正常に動作することを確認
  • Sidekiq ダッシュボードのフッターで正しい Elasticache インスタンスが表示されていることを確認
  • Docker ログにエラーが表示されていないことを確認(ok: run: redis: (pid XX) 0s
  • キャッシュをクリアし、Discourse を再起動(./launcher restart app
  • アプリを停止し、キャッシュをクリアしてからアプリを起動
  • アプリを再度ビルド

試していない手順

  • 新しい Elasticache インスタンスの作成
  • このインストールを廃棄し、クリーンな環境で再構築

同様の経験がある方はいますか?また、何かアドバイスはありますか?
見落としがある可能性のあるログはありますか?
Sidekiq にジョブを処理させる方法はありますか?

Discourse はある時点で Redis 5 が必要になりました。お使いの Elasticache がどのバージョンの Redis をサポートしているかご存知でしょうか。ログに明確なメッセージが表示されていたと思うのですが、もしかすると間違っているかもしれません。

Elasticache を使用している私のサイトを確認して、問題がないか確かめてみます。このサイトは Elasticache を使用しているはずです。

それは役立つ情報ですね、ありがとうございます。私は Redis のバージョン 3 を使用しているので、今夜アップデートを行うことになりそうです。

ログに明確なメッセージがあったと思っていたのですが

もしかすると、私が正しいログを見ていない可能性もあります。/logs./launcher logs app のどちらにもその兆候が見当たらないので、他に確認すべき場所があるかもしれませんね?

/var/discourse/shared/logs/rails/production.log

記憶と指がうまく働けばですが。

ほぼ正解です。私は以下の場所で見つけました:

/var/discourse/shared/web-only/log/rails/production.log

見つけてしまえば、メッセージは非常に明確でした :+1:t2::

You are connecting to Redis v3.2.10, Sidekiq requires Redis v4.0.0 or greater

Redis 5 にアップグレードしたところ、滞留していたキューが処理されました。すべて正常に動作しています!ありがとうございます!