2013-05-14 5 views
1

난 sidekiq와 레일 애플 리케이션을 배포하고 있습니다. 각 배포시에 Capistrano는 이전에 실행중인 sidekiq (루비 프로세스) 버전을 중지하고 새 프로세스를 시작합니다. 나는 sidekiq pid 파일을 모니터하고있다.pid의 변경을 허용하려면 어떻게해야합니까?

문제점 : pid 파일을 배포 할 때마다 monit이 변경되었음을 감지하고 프로세스를 다시 시작합니다. 며칠 동안 여러 릴리즈가 끝나면 하나만 원할 때 여러 개의 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 

는 PID 파일이 변경 만 sidekiq 인스턴스가 실행되고 있는지 확인하기 위해 수 있도록 MONIT을 구성 할 수있는 방법이 있나요 : 여기

는 sidekiq 내 MONIT의 설정인가?

답변

4

기본 capistrano 작업을 재정 의하여 sidekiq를 다시 시작하려면 monit을 통해 수행해야합니다.

예를 들어, 당신은 당신의 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