Re: Nginx не "умирает" корректно

Gena Makhomed gmm at csdoc.com
Sun May 3 20:30:09 MSD 2009


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx.spec.patch
Type: application/octet-stream
Size: 394 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090503/b9e6141d/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx.init
Type: application/octet-stream
Size: 2200 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090503/b9e6141d/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx.init.orig
Type: application/octet-stream
Size: 1972 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090503/b9e6141d/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx.init.patch
Type: application/octet-stream
Size: 2072 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090503/b9e6141d/attachment-0003.obj>


More information about the nginx-ru mailing list