On Thursday, August 28, 2008 at 0:09:02, Denis V Seleznyov wrote:
DVS> Имею сабж в логах при остановке nginx на RHEL5.2 x86_64.
DVS> Соответственно, не работает service nginx stop и service nginx restart.
скорее всего причина этих глюков в том,
что nginx был собран вместе с экспериментальным модулем:
--with-http_perl_module
Именно, я приводил примеры логов с perl_module и без него.
логика работы такая: если вызывать killproc $prog без параметров,
сначала посылается сигнал kill -TERM $pid, потом ждут 1 секунду
и посылают сигнал kill -KILL $pid
если функция вызывается с параметром, например killproc $prog -QUIT
тогда только посылается сигнал, и происходит немедленный возврат из функции.
в тех инит-скриптах для nginx`а, что я видел дял RHEL -
функция stop реализована через killproc $prog -QUIT
а restart - как stop ; start
я нагло стибрил с fedora 9, там так и есть
поэтому для nginx вполне может помочь заменить
killproc $prog -QUIT
на
killproc $prog
без изменений
или в функции restart между stop и start вставить sleep 1 или 2 или 3
а вот sleep 1 помогает. видимо, nginx не мог подняться пока старый еще умирал. Видимо, при повышении нагрузки нужно будет пропорционально увеличивать количество секунд :)
или (может быть) не использовать http_perl_module на production.