6

我正在使用 sidekiq gem 来处理 Rails 中的后台作业。由于某种原因,该工作会在一段时间后挂起——该过程要么变得无响应,出现top但没有太多其他内容,要么神秘地消失,没有错误(没有任何错误报告给 airbrake.io)。

有没有人有这方面的经验?

4

2 回答 2

8

Use the TTIN signal to get a backtrace of all threads in the process so you can figure out where the workers are stuck.

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

于 2012-07-01T16:52:54.537 回答
1

我经历过这种情况,但还没有找到解决方案/根本原因。

我无法干净地解决这个问题,但想出了一个技巧。

我将 God 配置为监视我的 Sidekiq 进程,并在文件更改时重新启动它们。

然后我设置了一个每 5 分钟运行一次的 Cron 作业,它检查所有当前 Sidekiq 工作人员的队列。如果某个百分比的工人过去的开始时间 <= 5 分钟,则意味着这些工人因某种原因挂起。如果发生这种情况,我触摸了一个文件,这让上帝重新启动了 Sidekiq。对我来说,5 分钟是理想的,但这取决于你的工作通常运行多长时间。

这是我可以解决挂起的 Sidekiq 作业的唯一方法,而无需每小时手动检查它们并自己重新启动它。

于 2013-01-14T03:44:02.270 回答