我正在使用 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 实例正在运行?