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

Igor Sysoev is at rambler-co.ru
Tue Mar 6 23:38:03 MSK 2007


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
-------------- next part --------------
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;
     }


More information about the nginx-ru mailing list