Rails でバックグラウンド ジョブを処理するために sidekiq gem を使用しています。なんらかの理由で、しばらくするとジョブがハングアップします。プロセスが応答しなくなり、表示されるだけで他に何も表示されなくなるかtop
、エラーなしで不思議なことに消えます (airbrake.io には何も報告されません)。
誰もこれを経験したことがありますか?
Rails でバックグラウンド ジョブを処理するために sidekiq gem を使用しています。なんらかの理由で、しばらくするとジョブがハングアップします。プロセスが応答しなくなり、表示されるだけで他に何も表示されなくなるかtop
、エラーなしで不思議なことに消えます (airbrake.io には何も報告されません)。
誰もこれを経験したことがありますか?
TTINシグナルを使用して、プロセス内のすべてのスレッドのバックトレースを取得し、ワーカーがスタックしている場所を特定できるようにします。
私はこれを経験しましたが、解決策/根本的な原因を見つけられませんでした。
私はこれをきれいに解決することができませんでしたが、ハックを思いつきました。
Sidekiqプロセスを監視し、ファイルが変更された場合にそれらを再起動するようにGodを構成しました。
次に、5分ごとに実行されるCronジョブを設定し、現在のすべてのSidekiqワーカーのキューをチェックしました。労働者の特定の割合が過去に5分未満の開始時間を持っていた場合、それはそれらの労働者が何らかの理由でハングしたことを意味します。それが起こった場合、私はファイルに触れたので、神はSidekiqを再起動しました。私にとっては5分が理想的でしたが、それはあなたの仕事が通常どれくらいの時間実行されるかに依存します。
これは、1時間ごとに手動でチェックし、自分で再起動することなく、ハングしているSidekiqジョブを解決できる唯一の方法です。