Ошибка port_getn() при eventport на Solaris 10

Igor Sysoev is at rambler-co.ru
Wed Mar 7 11:17:00 MSK 2007


On Wed, Mar 07, 2007 at 10:57:23AM +0300, Alexey Rymonin wrote:

> >> IS> Патч прилагается. Он понижает уровень ошибки до отладчного, поскольку
> >> IS> это не критическая ошибка..
> >> 
> >> Спасибо... ошибка больше в логах не фигурирует...
> >> 
> >> IS> Что касается SIGQUIT и SIGHUP, то они оба вызывают плавное завершение
> >> IS> рабочих процессов: http://sysoev.ru/nginx/docs/control.html
> >> IS> и поэтому рабоиче процессы могут висеть минуты и даже часы при скачивании
> >> IS> больших файлов.
> >> 
> >> а вот по SIGHUP боюсь что там что-то есть еще...
> >> я сделал новую сборку с дебагом, поставил eventport и два воркера....
> >> забиндил чисто на локалхот и энный порт....
> >> просто запускаю nginx и через 2-3 секунды (это в общем не важно)
> >> посылаю SIGHUP... после чего у меня в памяти висит уже 5 пидов....
> >> 1 главный и 4 воркера.... он почему-то пораждает новых, а старых не
> >> убивает.... и так дождаться пока он старых убъет мне не удалось
> >> (больше часа ждал при учете что на сервер никто не ходил)
> >> я приложил debug.log небольшого промежутка от запуска... далее
> >> sighup... и в завершении kill `pgrep
> >> nginx` поскольку после SIGHUP он на SIGQUIT больше не реагирует....
> >> :-(
> 
> > Прилагаемый патч должен помочь.
> 
> помогло.... реакция на SIGHUP стала моментальной и абсолютно
> адекватной...
> а такой вопросик, может не в тему.... или может устарелый
> а это нормально что даже при отсудствии соединения он постоянно
> опрашивает порты?
> я раньше думал что рабочие процессы в реедблокированное состояние падать должны...

Что имеется под "постоянно опрашивает порты" ? Вот это:

2007/03/05 20:34:50 [debug] 10654#0: worker cycle
2007/03/05 20:34:50 [debug] 10653#0: worker cycle
2007/03/05 20:34:50 [debug] 10643#0: worker cycle
2007/03/05 20:34:50 [debug] 10654#0: accept mutex lock failed: 0
2007/03/05 20:34:50 [debug] 10653#0: accept mutex lock failed: 0
2007/03/05 20:34:50 [debug] 10643#0: accept mutex lock failed: 0
2007/03/05 20:34:50 [debug] 10654#0: eventport timer: 500
2007/03/05 20:34:50 [debug] 10653#0: eventport timer: 500
2007/03/05 20:34:50 [debug] 10643#0: eventport timer: 500
2007/03/05 20:34:51 [debug] 10653#0: timer delta: 510
2007/03/05 20:34:51 [debug] 10653#0: posted events 00000000

? Это не опрос портов, а раз в 500ms рабочие процессы пытаются захватить
accept lock для экслюзивного доступа к listen-сокетам.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list