Можете ли вы перезагрузить приложение Rails на Passenger так же плавно, как и на Unicorn?

С Unicorn вы можете перезапустить и перезагрузить приложение Rails с помощью kill -USR2 [master process], что не останавливает процесс немедленно, а запускает новый главный процесс + подчиненные процессы в фоновом режиме. Когда новый мастер будет готов, вы можете отключить старый мастер с помощью kill -QUIT. Это позволяет перезапустить ваш веб-сайт, и посетители не заметят замедления обработки запросов.

Но с Passenger вы перезапускаете приложение Rails с помощью touch tmp/restart.txt, что, насколько я могу судить, приводит к тому, что приложение Rails перестает отвечать на запросы в течение нескольких секунд, необходимых для перезапуска приложения Rails.

Есть ли способ использовать Passenger, но при этом без проблем перезапустить приложение Rails?


person dan    schedule 18.01.2012    source источник
comment
Это может помочь serverfault .com/questions/263566/   -  person Peter Brown    schedule 18.01.2012


Ответы (2)


Нет. [теперь да - см. ответ Хунли]

Вы просите о последовательном перезапуске, при котором новые серверные процессы запускаются до того, как старые будут убиты. Passenger (бесплатная версия) не будет отбрасывать запросы, но они будут ставиться в очередь и задерживаться при каждом развертывании.

Последовательный перезапуск предположительно уже реализован и доступен в лицензионной версии, но еще не выпущен для бесплатной версии. Не могу понять как получить лицензионную версию.

Следите за этой веткой групп Google для получения дополнительной информации:

https://groups.google.com/forum/#!msg/phusion-passenger/hNvU-ZE7_WY/gOF9XWmhHy0J

Вы можете попробовать запустить два автономных пассажирских процесса и вручную отключить один, пока другой остается, но я не думаю, что это тот ответ, который вы искали.

person klochner    schedule 18.01.2012
comment
Спасибо за ответ. Теперь я также знаю, что можно использовать термин «скользящая перезагрузка». - person dan; 19.01.2012
comment
Нет проблем — как вы можете видеть из ветки Google, я немного расстроен задержкой с выпуском этой функции. - person klochner; 19.01.2012
comment
Это потому, что упомянутая вами лицензионная версия не была выпущена до августа. Мой пост в этой теме проливает больше света на этот вопрос. - person Hongli; 24.10.2012

Непрерывный перезапуск доступен в Phusion Passenger Enterprise.

Это «лицензионная версия», о которой говорил Клохнер, но она не была выпущена до августа. Phusion Passenger Enterprise полностью автоматизирует чередующиеся перезапуски (Unicorn требует ручного написания сценариев, чтобы последовательные перезапуски работали надлежащим образом). Он также включает в себя множество других полезных функций, таких как защита от ошибок развертывания, живая консоль IRB и т. д.

person Hongli    schedule 23.10.2012
comment
Поздравляю с релизом, живая консоль irb выглядит очень круто. - person klochner; 24.10.2012