Sidekiq 作业陷入队列

问题描述 投票:0回答:8

Sidekiq 一直在完美的开发模式下工作。现在我尝试在生产中使用它,所有作业都只是坐在队列中并且从未运行。有人能指出我如何解决这个问题的正确方向吗?

ruby-on-rails ruby-on-rails-3 redis ubuntu-10.04 sidekiq
8个回答
56
投票

请检查 sidekiq 进程是否实际运行:

ps aux | grep sidekiq

如果不是,请尝试先在前台运行 sidekiq 并检查输出。

bundle exec sidekiq -e production

20
投票

在很多情况下,对我来说,这是因为我没有在

config/sidekiq.yml
中正确声明此特定服务的队列。


4
投票

这个答案看起来很相关: Sidekiq 不处理队列 如果 Sidekiq 没有被告知配置文件(在生产中可能需要不同的咒语),那么它可能没有使用正确的队列。


3
投票

请注意,当我结束此页面时试图找出为什么我的 Rails Sidkiq 作业没有脱离“排队”状态。

  1. 检查终端中的 sidekiq 控制台
  2. 我的问题困扰了我近一个小时...呃...我在代码中有一个 'byebug' 断点,将其放入后台作业是愚蠢的。这会彻底搞砸你的工作。显然...我并不是故意把断点放在那里。我发誓:)

2
投票

我的解决方案:

1.) 查看您应用程序的 Sidekiq Web UI(在这里您可以看到作业正在进入排队状态)。

2.) 手动重试失败的作业

3.) 检查运行 Sidekiq 的服务器上的日志:

(如果说您在登台时执行此操作,通常这是日志所在的位置)

tail -f /var/www/yourappname/current/log/staging.log

您通常会在此处看到更详细的错误消息,说明 Sidekiq 无法处理排队作业的原因。在我们的例子中,有一个环境变量指向特定于我们的部署配置的错误端点。


1
投票

确保您的应用程序 sidekiq 进程运行

$ ps aux | grep sidekiq
server   26813  0.0  0.0  14228  1084 pts/11   S+   11:27   0:00 grep --color=auto sidekiq
server   27936  0.3  0.6 1178904 153240 ?      Sl   Apr17  46:02 sidekiq 5.2.7 app1 [0 of 10 busy]

示例显示只有一个 sidekiq 进程正在运行(app1)。如果您的应用程序不在列表中,那么您必须为您的应用程序启动 sidekiq 进程,在此示例中为 app2 。 gem

capistrano-sidekiq
让您的生活更轻松:

$ cap production sidekiq:start
00:00 sidekiq:start
      01 $HOME/.rbenv/bin/rbenv exec bundle exec sidekiq --index 0 --pidfile /var/www/app2/shared/tmp/pids/sidekiq-0.pid --environment produ…
    ✔ 01 [email protected] 0.400s

并且app2进程将被激活。现在再检查一下

$ ps aux | grep sidekiq
server   25857  8.6  7.6 3073532 1870244 ?     Sl   11:15   1:02 sidekiq 5.2.8 app2 [0 of 10 busy]
server   26813  0.0  0.0  14228  1084 pts/11   S+   11:27   0:00 grep --color=auto sidekiq
server   27936  0.3  0.6 1178904 153240 ?      Sl   Apr17  46:02 sidekiq 5.2.7 app1 [0 of 10 busy]

队列应该正常运行


0
投票

使用

capistrano-sidekiq
gem 解决了我们的问题


0
投票

如果您使用 Heroku,请确保您在“资源”选项卡上启用了 Sidekiq :)

© www.soinside.com 2019 - 2024. All rights reserved.