Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Nginx не "умирает" ко рректно
On Mon, Apr 27, 2009 at 05:39:59PM +0300, Gena Makhomed wrote:
> On Monday, April 27, 2009 at 13:54:09, Maxim Dounin wrote:
>
> >> > restart() {
> >> > configtest || return $?
> >> > stop
> >> > start
> >> > }
>
> ...
>
> MD> Кроме того, старый процесс после окончания завершения удалит
> MD> pid-файл, и это скорее всего уже будет pid-файл нового процесса.
>
> похоже что причина глюка в другом: новый nginx не будет запускаться
> командой "daemon $nginx -c $NGINX_CONF_FILE" если старый nginx не успел
> удалить свой pid-файл. [ функция daemon() из /etc/init.d/functions ]
>
> этот init-скрипт для nginx используется в CentOS, EPEL, Fedora.
> хотелось бы сделать какое-то нормальное решение а не ugly hack.
>
> будет ли нормальным решением проблемы добавить sleep 1 в функцию restart
>
> restart() {
> configtest || return $?
> stop
> sleep 1
> start
> }
>
> или можно придумать что-то лучшее? например, переименовывать
> старый pid-файл как можно скорее после получения сигнала
> из nginx.pid в nginx.pid.oldbin и потом не спеша удалять
> его в момент полного завершения работы старого мастера?
В смысле переименовывать самому nginx'у ?
По-моему, нужно лечить скрипты: у nginx'а сигналами всё нормально.
Для быстрого завершения есть -TERM.
Для загрузки новой конфигурации есть -HUP.
Зачем нужен restart, я не понимаю.
--
Игорь Сысоев
http://sysoev.ru
|