Используя божий мониторинг для работников Sidekiq
Я искал конфигурацию о том, как запустить sidekiq, используя систему мониторинга бога. Ниже приведен файл бога, который я использую для запуска sidekiq.
rails_env = ENV['RAILS_ENV'] || "production"
rails_root = ENV['RAILS_ROOT'] || "/home/ubuntu/Projects/app"
God.watch do |w|
w.dir = "#{rails_root}"
w.name = "sidekiq"
w.interval = 30.seconds
w.env = {"RAILS_ENV" => rails_env}
w.interval = 30.seconds
w.start = "/home/ubuntu/.rvm/gems/ruby-1.9.3-p0/bin/ruby -f #{rails_root}/ sidekiq -c 25 -q worker,15 -q distributor,5"
w.uid = 'ubuntu'
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
# determine when process has finished starting
w.transition([:start, :restart], :up) do |on|
on.condition(:process_running) do |c|
c.running = true
c.interval = 5.seconds
end
# failsafe
on.condition(:tries) do |c|
c.times = 5
c.transition = :start
c.interval = 5.seconds
end
end
# start if process is not running
w.transition(:up, :start) do |on|
on.condition(:process_running) do |c|
c.running = false
end
end
end
Когда я запускаю этот скрипт, используя god
команда "сервер богов" "показывает процесс, не запущенный", как будто ничего не происходит. Я считаю, что я не вызываю sidekiq, используя w.start
правильно,
я использую bundle exec sidekiq -c 25 -q worker,15 -q distributor,5
в режиме разработки, и он работал нормально.
Что мне не хватает? Есть ли другой способ, как развернуть работников Sidekiq?
3 ответа
Важнейшая вещь, которая решила вопрос "процесс не запущен" для меня, это правильно определить dir
атрибут:
w.dir = "#{Rails.root}"
Это решило проблему.
Я столкнулся с похожими проблемами. Задание настроек очереди и параллелизма в sidekiq.yml решило это за меня. В твоем боге начни,
sidekiq -e #{env} -C #{root}/config/sidekiq.yml
В Sidekiq Github есть пример конфигурации yml. Это выглядит примерно так:
---
:concurrency: 25
:queues:
- [a, 5]
- [b, 3]
- [c, 2]
- [default, 3]
Я надеюсь, что вы уже нашли решение, хотя.
Я только что использовал ваш код для развертывания моей собственной установки god / sidekiq, и это изменение заставило меня работать. Я заменил твой w.start
с:
w.start = "bundle exec sidekiq -q release,1 -q artist,2 -q artists,3 -c 20"
(Хотя, конечно, это те очереди, которые я использовал, и они не актуальны)