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

Igor Sysoev is at rambler-co.ru
Mon Mar 5 19:44:52 MSK 2007


On Fri, Mar 02, 2007 at 10:29:45AM +0300, Alexey Rymonin wrote:

> Вложил debug.log + error.log + access.log
> сформированной открытиет одной html странички на которой было куча
> несуществующих картинок.... этого достаточно чтобы баги поползли :-)
> 
> Буду очень благодарен за помощь...
> 
> 
> > Думаю, стоит прилагать отладочный лог.
> 
> >> 27.02.07, Alexey Rymonin <x-phoenix at mail.ru> написал(а):
> >> Здравствуйте.
> 
> >> Подскажите плз, работаю под Solaris 10. nginx в дефолтовской
> >> конфигурации бегает нормально, но как только я ставлю
> >> events {
> >>     use eventport;
> >>     worker_connections  1024;
> >> }
> >> сразу в error.log, при ладе очень маленьких нагрузках начинают
> >> плодиться следующие записи....
> 
> >> 2007/02/27 22:28:04 [alert] 2552#0: port_getn() error fd:9 ev:0008
> >> 2007/02/27 22:28:04 [alert] 2552#0: port_getn() error fd:11 ev:0008
> >> 2007/02/27 22:28:40 [alert] 2552#0: port_getn() error fd:8 ev:0008
> 
> >> так же nginx начинает выгружить (по SIGQUIT) ощутимое время (порядка
> >> 10 сек.) а результатов по SIGHUP иной раз можно и не дождаться.....
> >>
> >> Что с этим можно сделать, кроме того как не использовать eventport?

Патч прилагается. Он понижает уровень ошибки до отладчного, поскольку
это не критическая ошибка.

Что касается SIGQUIT и SIGHUP, то они оба вызывают плавное завершение
рабочих процессов: http://sysoev.ru/nginx/docs/control.html
и поэтому рабоиче процессы могут висеть минуты и даже часы при скачивании
больших файлов.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/event/modules/ngx_eventport_module.c
===================================================================
--- src/event/modules/ngx_eventport_module.c	(revision 447)
+++ src/event/modules/ngx_eventport_module.c	(working copy)
@@ -467,9 +467,9 @@
                            event_list[i].portev_object, revents);
 
             if (revents & (POLLERR|POLLHUP|POLLNVAL)) {
-                ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
-                              "port_getn() error fd:%d ev:%04Xd",
-                              event_list[i].portev_object, revents);
+                ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                               "port_getn() error fd:%d ev:%04Xd",
+                               event_list[i].portev_object, revents);
             }
 
             if (revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL)) {


More information about the nginx-ru mailing list