ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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



 




Copyright © Lexa Software, 1996-2009.