2013-02-19 4 views
0

resque scheduler를 사용하려고하는데 프로세스를 모니터링하는 좋은 방법을 찾을 수 없습니다. 배포 후 스케줄러 작업을 중단하고 upstart을 다시 시작하도록하십시오. 나는 그것을 다시 시작합니다이 시점 신출내기에서, resque - 스케줄러에게resque scheduler upstart

task :stop_scheduler => :environment do 
     pidfile = Rails.root + "tmp/pids/resque_scheduler.pid" 
     if File.exists?(pidfile) 
     pid = File.read(pidfile).to_i 
     syscmd = "kill -s QUIT #{pid}" 
     puts "Running syscmd: #{syscmd}" 
     system(syscmd) 
     FileUtils.rm_f(pidfile) 
     else 
     puts "****WARNING**** Scheduler pid file has not been found. Was scheduler running??" 
    end 
    end 

을 죽일 카피 스트라 노 스크립트를 썼다. 내 문제는 신생 신용 카드 사용으로 인한 것일 수 있습니다. Schduler가 tmp/pids/resque_scheduler.pid에 PID를 작성하여 다음 재시작시이를 종료 할 수있게해야합니다. 내가 스케줄러 포크 다른 시간과 내 pidfile에 쓴 PID가 정확하지 효과가 conf의 이런 종류의 사용

respawn 
respawn limit 99 5 
console none 

script 
su -c "source 'cd /myapp/; RAILS_ENV={env} bundle exec rake resque:scheduler BACKGROUND=yes PIDFILE=./tmp/pids/resque_scheduler.pid >> ~/resque_workers.log 2>&1" my_user 
end script 

:

은 여기 내 신출내기 conf의 중요한 부분이다. 나는 계속해서 부활하고 다시는 죽일 수없는 과정으로 끝난다.

의견이 있으십니까?

이 오래

답변

0

, 그러나 당신이 체크 아웃 한 : http://upstart.ubuntu.com/cookbook/#expect

는 기본적으로, 당신은 몇 번이나 포크 신출내기 말할 필요 - 귀하의 경우에, 나는 당신이 당신의 신출내기 설정 파일에 expect fork을 추가 할 생각 SU 때문에 - c가 한 번 포크를 실행합니다 (스크립트가 두 번 분기되면 expect daemon을 사용합니다).

0

나는 동일한 문제가 있었고 BACKGROUND = yes 플래그를 제거해야한다는 것을 알았습니다.

포크 카운트를 검토하여이를 결정했습니다. 포크 카운트는 2 이상이었고 계속 증가했습니다. 이렇게하는 방법에 대한 정보는 http://upstart.ubuntu.com/cookbook/#how-to-establish-fork-count을 참조하십시오.

나는 BACKGROUND = yes를 테스트로 제거하고 작동했습니다. 나는 upstart가 백그라운드에서 자동으로 작업을 시작하고 백그라운드에서 실행되도록 지시하고있을뿐만 아니라 신출내기가 혼란스러워지고 새로운 프로세스를 지속적으로 생성하기 때문에 이것이라고 생각합니다.

나는 제거되면 배경 = 네, 데몬, 그리고 같은 당신이 당신의 신출내기 스크립트에서이 필요합니다 의미했다 2 위에 언급 된 "어떻게 설정하는 포크 ​​수"의 결과 :

것은 기대 데몬