ПРОЕКТЫ 


  АРХИВ 


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 Monday, April 27, 2009 at 18:16:27, Igor Sysoev 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.
>> 
   ...
>>
>> или можно придумать что-то лучшее? например, переименовывать
>> старый pid-файл как можно скорее после получения сигнала
>> из nginx.pid в nginx.pid.oldbin и потом не спеша удалять
>> его в момент полного завершения работы старого мастера?

IS> В смысле переименовывать самому nginx'у ?
IS> По-моему, нужно лечить скрипты: у nginx'а сигналами всё нормально.

Ok. поправил ошибку в init-скрипте, отправил патч мантейнеру пакета.

-    killproc $prog -QUIT
+    killproc $prog

заодно добавил в init-script поддержку для "upgrade server on the fly".

IS> Для быстрого завершения есть -TERM.
IS> Для загрузки новой конфигурации есть -HUP.
IS> Зачем нужен restart, я не понимаю.

в основном - это для LSB-совместимости.

http://refspecs.linux-foundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html

а так - "service nginx reload" действительно гораздо лучше, чем "service nginx 
restart".

P.S.

возможно есть какие-то изменения в конфигурации, после которых "service nginx 
reload"
не сработает, а сработает только "service nginx upgrade" или "service nginx 
restart".

-- 
Best regards,
 Gena

Attachment: nginx.spec.patch
Description: Binary data

Attachment: nginx.init
Description: Binary data

Attachment: nginx.init.orig
Description: Binary data

Attachment: nginx.init.patch
Description: Binary data



 




Copyright © Lexa Software, 1996-2009.