2012-07-01 53 views
6

私はsidekiq宝石を使ってRailsでバックグラウンドジョブを処理しています。何らかの理由で、仕事がちょっと遅れてしまいます。プロセスは反応しなくなり、topに表示されますが、それほど多くはないか、または不思議に消えます(airbrake.ioには何も報告されません)。長時間実行されているSidekiqジョブが継続しています

誰もこの経験がありますか?

答えて

7

TTIN信号を使用して、プロセス内のすべてのスレッドのバックトレースを取得し、従業員がどこにいるかを把握できます。

https://github.com/mperham/sidekiq/wiki/Signals

+1

これはどのように使用しますか? – Avishai

+4

'kill -TTIN#{worker_pid}' –

1

私はこれを経験し、その溶液/根本原因を発見していません。

これをきれいに解決できませんでしたが、ハックが発生しました。

神が私のSidekiqプロセスを監視し、ファイルが変更された場合にそれらを再起動するように設定しました。

5分ごとに実行されるCronジョブをセットアップして、すべての現在のSidekiqワーカーにキューをチェックインしました。特定の割合の従業員が過去に開始時刻が< = 5分だった場合、それは何らかの理由で掛けられた労働者を意味していました。もしそれが起こったなら、私はファイルに触れ、神がサイドキックを再開させました。私にとって、5分は理想的でしたが、あなたの仕事がどれほど長く続くかによって異なります。

これは、手動で毎時チェックし、それを自分で再起動することなく、Sidekiqジョブをハングする問題を解決できる唯一の方法です。

+2

このスクリプトを共有できますか? –

関連する問題