2013-08-17 1 views
0

유니콘 어플리케이션 서버를 사용하는 레일즈 애플리케이션에서 전자 상거래 루비를 실행 중입니다. 루비 버전은 2.0.0이고 레일 버전은 3.2.14입니다. 웹 서버로 Nginx를 실행하고 있습니다. 코드를 서버로 전송할 때 웹 사이트에서 blup/bleep을 일으키는 유니콘 앱 서버를 다시 시작해야합니다. 해결책을 찾기 위해 봤지만 아무 것도 작동하지 않는 것 같습니다. 나는 전에 승객을 이용하고 있었다.루비 2.0.0과 Rails 3.2.14를 사용한 유니콘 핫 리셋

다시 시작할 때 blup을 피할 수있는 방법이 없으므로 중단 시간을 제로로 유지하십시오.

답변

1

유니콘 마스터에 USR2를 보내면 유니콘 작업자가 다시 시작되고 가동 중지 시간이 다시 시작되지 않아야합니다. 로 USR2 신호를 보내기 :

kill -s USR2 process-id-of-master-process 

는 유니콘 마스터의 숫자 프로세스 ID와 프로세스 ID-의 마스터 프로세스를 교체 (추신 AGX와 함께 그것을 발견 | 그렙 유니콘, 또는 PID를 폴더에 보면 유니콘은 Bundler를 실행중인 경우, 당신은 여전히 ​​새로운 Gemfile이 뽑힐하기 위해 당신이 Gemfile을 변경할 때마다 콜드 재시작을 수행해야한다는 unicorn.pid

참고. 내가 사용하고

+0

"번들 exec 유니콘 -D -c $ APP_ROOT/config/unicorn.rb -E 프로덕션 "유니콘을 시작하는이 명령 –

+2

USR2 신호를 마스터 프로세스로 보내고 & wil Gemfile을 제외한 새로운 응용 프로그램 코드를 선택하십시오. 따라서 Gemfile을 변경하지 않는 경우, USR2는 다운 타임이 전혀없는 재시작 티켓입니다. USR2를 사용하는 경우 번들 exec를 다시 실행할 필요가 없습니다. 새 프로그램을 다시 시작하지 못하면 이전 프로그램이 계속 실행됩니다. Gemfile을 변경하면 QUIT 신호를 마스터에 보내고 번들 exec unicorn ... 명령을 실행하여 새 유니콘 마스터를 시작합니다. 그러나 이는 중단 시간이 전혀없는 재시작이 아니며 문제가있는 경우 앱이 시작되지 않고 고정 될 때까지 다운되었습니다. – nachbar

+0

kill -s USR2 process-id-of-master-process가 정상적으로 작동하고 있습니다. 위의 명령을 사용하면 최신 코드를 제공하지만 이전 하위 프로세스가 여전히 존재하며 이전 코드도 제공하는 2 개의 새 프로세스가 생성됩니다. 오래된 자식 프로세스를 죽여야합니까?/해결책은 무엇입니까? –