Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: panic: MUTEX_LOCK (22) [op.c:352]
- To: Denis V Seleznyov <nginx-ru@xxxxxxxxx>
- Subject: Re: panic: MUTEX_LOCK (22) [op.c:352]
- From: Gena Makhomed <gmm@xxxxxxxxx>
- Date: Thu, 28 Aug 2008 13:13:21 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csdoc.com; s=dkim; t=1219918503; bh=q+WtQ7KREdQ4XF20ViC6dJSn411i5bqotI7BNPKEW2k=; h=Date:From:X-Mailer:X-Priority:Message-ID:To:Subject:In-Reply-To: References:MIME-Version:Content-Type:Content-Transfer-Encoding; b=Ll9w6izQsslcdLzX8uiRKWnKOI1lC9UdZ4zp2OyuzgTTQJcTREBgk8wV6tCSUBUNF XiupUrfZ1o/wKPdICd3A2FrzyDUiGC2tdo6UAp+B3iKHaXyhvnu7bRbz7VZ9uVI7gw2 TybBM0DIHANpzJeISLre2rf/ouMPEahr6yDcH9M=
- In-reply-to: <200808280109.02747.denis.seleznyov@xxxxxxxxx>
- References: <200808280109.02747.denis.seleznyov@xxxxxxxxx>
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
|