ПРОЕКТЫ 


  АРХИВ 


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: 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




 




Copyright © Lexa Software, 1996-2009.