【发布时间】:2013-06-05 17:08:38
【问题描述】:
我正在使用 sidekiq 部署 Rails 应用程序。在每次部署时,Capistrano 都会停止以前运行的 sidekiq 版本(一个 ruby 进程),然后启动一个新版本。我正在用monit监控sidekiq pid文件。
问题:每次我部署 pid 文件时都会发生更改,但 monit 检测到它已更改并重新启动进程。经过几天的多次发布,我最终得到了多个 sidekiq 实例,而我只想要一个。
这是我对 sidekiq 的监控配置:
check process sidekiq_main with pidfile /srv/apps/orders/current/tmp/pids/sidekiq.pid
every 3 cycles
start program = "/bin/bash -c -l 'cd /srv/apps/orders/current ; nohup bundle exec sidekiq -e production -C /srv/apps/orders/current/config/sidekiq.yml -i 0 -P /srv/apps/orders/current/tmp/pids/sidekiq.pid >> /srv/apps/orders/current/log/sidekiq.log 2>&1 &'"
stop program = "/bin/bash -c -l 'cd /srv/apps/orders/current ; bundle exec sidekiqctl stop /srv/apps/orders/current/tmp/pids/sidekiq.pid 10'"
group sidekiq
有没有办法配置 monit 以允许更改 pid 文件并仅确保 sidekiq 实例正在运行?
【问题讨论】:
标签: capistrano sidekiq monit