Ошибка 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