【问题标题】:How do I configure monit to allow the change in pid?如何配置 monit 以允许更改 pid?
【发布时间】: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


    【解决方案1】:

    覆盖默认的 capistrano 任务以确保通过 monit 重新启动 sidekiq。

    例如,您可以将其添加到您的 deploy.rb

    namespace :sidekiq do    
      desc "Restart sidekiq"
      task :restart, :roles => :app, :on_no_matching_servers => :continue do
        run "sudo /usr/bin/monit restart sidekiq"
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2011-01-01
      • 2017-06-18
      • 2015-12-02
      • 1970-01-01
      相关资源
      最近更新 更多