Ruby on rails 多队列sidekiq:作业被卡住

Ruby on rails 多队列sidekiq:作业被卡住,ruby-on-rails,ruby,capistrano,sidekiq,jobs,Ruby On Rails,Ruby,Capistrano,Sidekiq,Jobs,我最近不得不对我的Sidekiq队列进行优先级排序(在我只使用default队列之前) 因此,我编写了一些应该在不同队列上执行的作业 Mysidekiq.yml: :queues: - slack_notifier - invoicing - default deploy.rb(capistrano): 在部署时,我可以看到它正在被使用: 01:32 sidekiq:start 01 $HOME/.rbenv/bin/rbenv exec bundle exec sid

我最近不得不对我的Sidekiq队列进行优先级排序(在我只使用
default
队列之前)

因此,我编写了一些应该在不同队列上执行的作业

My
sidekiq.yml

:queues:
  - slack_notifier
  - invoicing
  - default
deploy.rb
(capistrano):

在部署时,我可以看到它正在被使用:

01:32 sidekiq:start
      01 $HOME/.rbenv/bin/rbenv exec bundle exec sidekiq --index 0 --pidfile /home/ubuntu/cap/shared/tmp/pids/sidekiq.pid --environment production --logfile /home/ubuntu/cap/shared/log/sidekiq.log --config /home/ubuntu/cap/current/config/sidekiq.yml --queue slack_notifier --queue invoicing --queue default --daemon
Sidekiq正在运行:

ps aux | grep '[s]idekiq'
#=> ubuntu     716 16.4  2.1 668604 176860 ? Sl   07:31  14:18 sidekiq 4.2.6 cap [1 of 1 busy]
现在,当我开始工作的时候,他们似乎在某个时候停止了


不确定我是否能更好地描述这个问题。当我清除两个优先级队列(
slack\u notifier
invoicing
)时,默认的队列似乎仍然无法处理作业。

也许您可以对所有队列运行多个进程,将单独的队列放在单独的进程中以处理sidekiq作业。您的配置将如下所示

set :sidekiq_processes, 3
set :sidekiq_options_per_process, ['--queue slack_notifier', '--queue invoicing', '--queue default']

我认为这不会停止sidekiq,但前提是您的sidekiq流程已经足够优化,因此不会占用超出预期使用的内存。

是的,我来这里是为了反对票。我不确定为什么这个问题被否决;为了熵的恒定性而向上投票。看起来你有很多作业/长作业和并发性为1的Sidekiq。您可以尝试检查rails控制台的运行情况,您是否尝试过三种不同的sidekiq运行程序,每个队列一个?这不是capistrano的职责:部署一次,启动三次。只需为它们创建三个
upstart
/
systemctl
配置。
set :sidekiq_processes, 3
set :sidekiq_options_per_process, ['--queue slack_notifier', '--queue invoicing', '--queue default']