redis Sidekiq作业卡在队列中

ki1q1bka  于 2023-10-15  发布在  Redis
关注(0)|答案(8)|浏览(165)

Sidekiq一直在开发模式下完美地工作。现在我正尝试在生产环境中使用它,所有的作业都只是排队等待,从来没有运行过。有没有人能告诉我如何解决这个问题的正确方向?

m528fe3b

m528fe3b1#

请检查sidekiq进程是否正在运行:

ps aux | grep sidekiq

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

bundle exec sidekiq -e production
eeq64g8w

eeq64g8w2#

在很多情况下,这是因为我没有在config/sidekiq.yml中正确地声明这个特定服务的队列。

2j4z5cfb

2j4z5cfb3#

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

btqmn9zl

btqmn9zl4#

只是一个头了所有,因为我结束了这个页面试图找出为什么我的Rails Sidkiq工作没有移动'包围'。
1.检查您的sidekiq控制台在您的终端
1.我的问题困扰了我将近一个小时...我在代码中有一个“byebug”断点,把它放在后台工作中是愚蠢的。这会把你的工作搞砸的。很明显...我不是故意把这个断点放在那里的。我发誓:)

tp5buhyn

tp5buhyn5#

我的解决方案:
1.)查看应用程序的Sidekiq Web UI(在此可以看到作业进入排队状态)。
2.)手动重试失败的作业
3.)检查运行Sidekiq的服务器上的日志:
(通常这是日志所在的位置,如果您在分段上执行此操作)

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

这通常是你会看到一个更详细的错误消息,为什么Sidekiq不能处理排队的作业。在我们的例子中,有一个环境变量指向一个特定于我们的部署配置的错误端点。

dly7yett

dly7yett6#

确保您的应用程序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]

队列应该正常运行

14ifxucb

14ifxucb7#

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

r6vfmomb

r6vfmomb8#

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

相关问题