nginx reload vs nginx restart
Gena Makhomed
gmm на csdoc.com
Сб Июл 9 15:20:00 UTC 2011
On 09.07.2011 16:59, vagner wrote:
> подскажите пожалуйста, в каких случаях
> необходимо делать рестарт (нашел
> только что в случае изменения сокета)
возможно я ошибаюсь, но по моему мнению лучше
service nginx restart вообще никогда не делать.
потому что в этом случае происходит прерывание сервиса,
и клиенты увидят в браузере сообщение про ошибку подключения.
почему такая функция есть в инит-скрипте? для совместимости с LSB.
если будет не достаточно service nginx reload
тогда в nginx есть функция service nginx force-reload
которая применяется в том числе и для обновления бинарника "на лету",
при установке более новой версии nginx через команду yum update nginx
есть только один нюанс - команды service nginx reload
и service nginx force-reload нельзя выполнять очень часто,
особенно если есть запросы от клиентов которые долго обслуживаются.
например, отдача статического файла размером несколько гигабайт и т.п.
потому что обе эти функции, reload и force-reload запускают новые
worker-процессы с новой конфигурацией, а старые - "плавно" завершаются.
и при слишком большой частоте reload / force-reload - в системе будет
появляться большое количество worker-процессов и может закончиться RAM.
документация nginx на эту тему: http://sysoev.ru/nginx/docs/control.html
каким образом может быть реализована функция force-reload:
============================================================
instance=nginx
upgrade() {
configtest_q || return 6
echo -n $"Upgrading $instance: "
kill -USR2 `cat /var/run/$instance.pid`
sleep 1
if test -f /var/run/$instance.pid.oldbin
then
kill -QUIT `cat /var/run/$instance.pid.oldbin`
success $"$instance online upgrade"
echo
else
failure $"$instance online upgrade"
echo
exit 1
fi
}
============================================================
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru