最近、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 にジョブを処理させる方法はありますか?