Sidekiq のハートビートテストに失敗し、再起動中

最新のアップデートで同じ問題が発生しています。再ビルドによる更新以外に変更はありませんが、管理ダッシュボードには Sidekiq が実行されていないと表示されています。Postgres と Redis はコンテナ内で、アプリは別のコンテナで実行されており、すべて再起動しました。キューには数百件溜まっていますが、処理は進んでいません。

EDIT1: キューをすべてクリアしても解決せず、何も改善されませんでした。キューは再び溜まり続け、処理されません。

EDIT2: forum を再ビルドし、それに伴うダウンタイムを経験しましたが、まだこのメッセージが表示されます:

また、/sidekiq においてキューは処理されていません。これは beta7 から 2.4.0.beta9 へのアップデート前は問題なく動作していました。

EDIT3: 空き容量は 50GB 以上あります。バックアップを手動で実行(約 300MB 未満)すると正常に完了し、Sidekiq の一時停止と再開が行われたと表示されますが、ログにエラーは報告されません。それでも Sidekiq は実行されていないようです。

EDIT4: /logs で注目すべきログは、「Sidekiq heartbeat test failed, restarting」というメッセージが繰り返し表示されるものだけです。

EDIT5: Redis は正常に動作しているようです。少なくともログファイルは「やるべきことがあまりない」と忙しく書き込んでいます… 明確にするために:

[3] pry(main)> Sidekiq.paused?
=> false

EDIT6: 数分前にキューをクリアしましたが、再び 10 件のタスクがキューに溜まり、処理されません。

EDIT7: 通常のプロジェクトでは bundle exec sidekiq が Sidekiq を起動する一般的な方法だと分かりました。実際に実行して何が起こるか試してみましょう:

root@vps198273-forum:/var/www/discourse# bundle exec sidekiq
2020-01-06T05:10:18.814Z pid=31242 tid=gn383wxbu INFO: Booting Sidekiq 6.0.4 with redis options {:host=>"forum-data", :port=>6379, :namespace=>"sidekiq", :id=>"Sidekiq-server-PID-31242", :url=>nil}
You are connecting to Redis v3.0.6, Sidekiq requires Redis v4.0.0 or greater
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/cli.rb:62:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/bin/sidekiq:12:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/cli.rb:62:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/bin/sidekiq:12:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

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

これは興味深いですね?データコンテナを再ビルドして、データをいじる恐怖から祈りながら試してみましょう… lol…

EDIT8: どうやら Redis 5.0.5 が実行されているようです(なぜこのために PostgreSQL の pubsub が使われないのでしょうか?)。これは確かに 4.0.0 以上です… 再ビルドが完了し、forum をテストしたところ、データは残っており、スパイクが発生しました!


修正されたようです!この投稿が誰かの役に立つかもしれません。forum が Sidekiq の古い Redis に関するエラーを表示してくれればよかったのですが、おそらくそのログはどこか虚空に消えているのでしょう。どこにも見つからなかったので。:slight_smile: