56

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

4

7 回答 7

55

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

ps aux | grep sidekiq

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

bundle exec sidekiq -e production
于 2013-06-20T18:08:34.680 回答
17

在很多情况下,对我来说,这是因为我没有在config/sidekiq.yml.

于 2018-01-04T12:24:55.373 回答
4

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

于 2015-08-08T22:38:04.557 回答
3

当我结束这个页面试图弄清楚为什么我的 Rails Sidkiq 工作没有离开“排队”时,只是提醒大家。

  1. 在终端中检查 sidekiq 控制台
  2. 我的问题把我搞砸了将近一个小时......呃......我在代码中有一个'byebug'断点,放在后台作业中很愚蠢。这会完全搞砸你的工作。显然......我不是故意把那个断点放在那里的。我发誓 :)
于 2018-09-28T13:29:43.827 回答
2

我的解决方案:

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

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

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

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

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

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

于 2015-09-15T22:07:14.707 回答
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 。gemcapistrano-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 server@103.n.nnn.nnn 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]

队列应该已经正常运行

于 2020-04-27T04:44:35.517 回答
0

使用capistrano-sidekiqgem 解决了我们的问题

于 2019-09-05T10:49:37.370 回答