몽그렐이 말을 듣지 않으면 Kill -9
January 9th, 2008
Mongrel을 우아하게 재시작하는 법에서 이어서...
mongrel 프로세스를 종료하기 위해 보통 사용하는 명령은 다음과 같다.
- mongrel_rails stop [options]
문제는 온갖 문제로 특정 프로세스가 TERM 시그널을 받고도 죽지 않는 경우이다. TERM 시그널을 보내고 한참을 기다리면 스스로 사라지기도 하지만, 대부분의 경우 그리 느긋하게 기다릴 수만은 없다. 방법은 kill -9를 하는 것이다. 다행인지 mongrel_rails에는 강제 종료 옵션이 있다.
- mongrel_rails -f -w 5
내가 사용하는 방법은 이렇다. TERM을 보내본다. pid 파일이 아직도 있으면(정상적으로 종료되지 않으면) 강제 종료한다.
- def stop(i)
- pid = "#{APP_HOME}/shared/log/mongrel.400#{i}.pid"
- system "mongrel_rails stop -P #{pid} -c #{APP_HOME}/current"
- if File.exists?(pid)
- system "mongrel_rails stop -P #{pid} -c #{APP_HOME}/current -w 5 -f"
- system "rm #{pid}"
- end
- end
갑자기 "When Your Mongrel Misbehaves, Kill -9"이라는 명곡이 생각난다. 킬 대시 나인~~.




Leave a Reply