ПРОЕКТЫ 


  АРХИВ 


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: Ошибка port_getn() при eventport на Solaris 10



On Mon, Mar 05, 2007 at 08:41:09PM +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 больше не реагирует....
> :-(

Прилагаемый патч должен помочь.


-- 
Игорь Сысоев
http://sysoev.ru
Index: src/os/unix/ngx_process_cycle.c
===================================================================
--- src/os/unix/ngx_process_cycle.c     (revision 453)
+++ src/os/unix/ngx_process_cycle.c     (working copy)
@@ -1027,6 +1027,12 @@
         return;
     }
 
+    if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) {
+        if (ngx_add_event(ev, NGX_READ_EVENT, 0) == NGX_ERROR) {
+            return;
+        }
+    }
+
     if (n == NGX_AGAIN) {
         return;
     }


 




Copyright © Lexa Software, 1996-2009.