Ruby on rails 多队列sidekiq:作业被卡住
我最近不得不对我的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
default
队列之前)
因此,我编写了一些应该在不同队列上执行的作业
Mysidekiq.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']