panic: MUTEX_LOCK (22) [op.c:352]
Gena Makhomed
gmm at csdoc.com
Thu Aug 28 14:13:21 MSD 2008
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
если этот параметр configure убрать - все должно быть нормально.
в том смысле, как минимум не будет появляться этих ошибок
panic: MUTEX_LOCK (22) [op.c:352]
DVS> Я не очень ясно представляю себе логику работы редхатовского killproc,
DVS> поэтому не могу сказать почему это происходит.
исходник функции killproc можно найти в этом файле: /etc/init.d/functions
логика работы такая: если вызывать killproc $prog без параметров,
сначала посылается сигнал kill -TERM $pid, потом ждут 1 секунду
и посылают сигнал kill -KILL $pid
если функция вызывается с параметром, например killproc $prog -QUIT
тогда только посылается сигнал, и происходит немедленный возврат из функции.
в тех инит-скриптах для nginx`а, что я видел дял RHEL -
функция stop реализована через killproc $prog -QUIT
а restart - как stop ; start
поэтому для nginx вполне может помочь заменить
killproc $prog -QUIT
на
killproc $prog
или в функции restart между stop и start вставить sleep 1 или 2 или 3
или (может быть) не использовать http_perl_module на production.
DVS> Мне вообще особенно не мешает, однако коллеги могут нажать restart
DVS> и не посмотреть, поднялся ли сервис
пусть они вместо
service nginx restart
используют
service nginx reload
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
--
Best regards,
Gena
More information about the nginx-ru
mailing list