2013-05-30 2 views
0

Одним из преимуществ, которые всегда указываются при сравнении mod_perl и fastcgi, является то, что для mod_perl вам нужно полностью перезагрузить приложение и иметь время простоя, но с fastcgi вы можете перезагрузить приложение без время простоя. Однако я не могу найти примеров того, как это сделать. Возможно ли перезагрузить приложение Catalyst, которое выполняется с помощью fastcgi без простоя? Я пошел за этим guide, чтобы запустить приложение Catalyst. Благодаря!катализатор с перезагрузкой nginx и fastcgi без простоя

ответ

0

Я смог создать скрипт, который делает то, что я хочу, объединив этот скрипт guide и часть скрипта bash, найденного в этом answer. Если вы поместите скрипт в /etc/init.d, а затем измените соответствующие vars вверху, этот скрипт может быть очень полезен. Вызов:

service script reload 

или

/etc/init.d/script reload 

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

chmod +x script 

и переместить его в /etc/init.d, и тогда вы хорошо идти! :)

0

Да. Приложение, работающее под управлением FastCGI (независимо от того, использует ли он Catalyst или нет), может просто exit;, и FastCGI немедленно создаст процесс замены при условии, что FastCGI имеет AppClass, определенный для этого приложения, и AppClass настроен с положительным счетом -processes.

Если нет AppClass или -processes равно 0, процесс замены будет создан, когда следующий запрос поступит в URI приложения. Это может вызвать небольшую задержку для этого первого запроса во время ожидания запуска приложения, но запрос будет по-прежнему обрабатываться нормально.

В любом случае не должно быть момента, когда входящий запрос будет утерян или иным образом завершится неудачей, при условии, что приложению разрешено exit после завершения текущего запроса, а не прерываться в середине запроса (например, с kill -9).

+0

поэтому, если бы я должен был «убить» каждую из моих приложений, запущенных под FastCGI, они перезагрузились бы с любыми изменениями, внесенными в мое приложение, и тогда я могу продолжать использовать его нормально? – srchulo

+0

Исправить. Если по какой-либо причине процессы приложения уходят (убитые, завершенные, разбитые ...), FastCGI автоматически будет создавать замены. –

+0

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

Смежные вопросы