ПРОЕКТЫ 


  АРХИВ 


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: Crit error: sendfilev() failed (22: Invalid argument)



On Wed, Sep 12, 2007 at 09:33:04AM +0400, Alexey Rymonin wrote:

> Wednesday, September 12, 2007, 8:50:24 AM, you wrote:
> 
> > On Tue, Sep 11, 2007 at 11:17:31PM +0400, Alexey Rymonin wrote:
> 
> >> Tuesday, September 11, 2007, 10:30:07 AM, you wrote:
> >> 
> >> IS> On Tue, Sep 11, 2007 at 09:52:01AM +0400, Alexey Rymonin wrote:
> >> 
> >> >> Игорь, в логах появилась следующее:
> >> >> 2007/09/09 16:36:40 [crit] 7833#0: *314257 sendfilev() failed (22: 
> >> >> Invalid argument) while sending response to client, client: 
> >> >> 81.213.103.27, server: www.milavich.com, URL: "/", host: 
> >> >> "www.milavich.com"
> >> 
> >> >> Насколько это страшно и что с этим делать?
> >> >> надо-ли на дебаг ставить?
> >> 
> >> >> ну ось ясное дело Solaris x86
> >> 
> >> IS> Это ошибка в nginx'е. Прилагаемый патч добавляет логирование параметров
> >> IS> sendfilev() после ошибки. Возможно, с его помощью можно будет понять,
> >> IS> в чём дело.
> >> 
> >> Вот это сообщение повторилось 15 раз:
> >> 2007/09/11 23:07:34 [alert] 11329#0: *604 sendfilev: fd:20 n:13 while 
> >> sending to client, client: 213.159.248.203, server: www.e-prof.ru, URL: 
> >> "/company_catalog/", upstream: 
> >> "http://127.0.0.1:8080/e-prof/Company?tom_req_uri=/company_catalog/&file=/companycat/index.htt&action=0&main=51&base=51&basehrefname=company_catalog";,
> >>  host: "www.e-prof.ru", referrer: 
> >> "http://www.e-prof.ru/company_catalog/branch-neftegazodobicha_transportirovka/company1557.htm";
> 
> > После этой строки должны быть ещё 13 строк alert'ов с дополнительной
> > информацией. И какая строка перед этой строкой ?
> 
> Вот.... http://snake.sysdev.ru/ngx_logs/error.log
> там еще появилась строчечка...

Это оказалось не то. Перед alert'ами нет строк про ошибки sendfile, поэтому
это не серьёзные ошибки работы с клиентом, которые пишутся на уровне info -
NGX_ETIMEDOUTC, NGX_ECONNRESET, etc.

Я подготовил другой патч, который будет писать в первой строке код ошибки.
Имеет смысл реагировать на (22: Invalid argument).


-- 
Игорь Сысоев
http://sysoev.ru
Index: src/os/unix/ngx_solaris_sendfilev_chain.c
===================================================================
--- src/os/unix/ngx_solaris_sendfilev_chain.c   (revision 790)
+++ src/os/unix/ngx_solaris_sendfilev_chain.c   (working copy)
@@ -179,6 +179,19 @@
             } else {
                 wev->error = 1;
                 ngx_connection_error(c, err, "sendfilev() failed");
+
+                {
+                ngx_uint_t  i;
+                ngx_log_error(NGX_LOG_ALERT, c->log, err,
+                              "sendfilev: fd:%d n:%ui", c->fd, vec.nelts);
+                sfv = vec.elts;
+                for (i = 0; i < vec.nelts; i++) {
+                    ngx_log_error(NGX_LOG_ALERT, c->log, 0,
+                                "sendfilev: fd:%d %O:%uz",
+                                sfv[i].sfv_fd, sfv[i].sfv_off, sfv[i].sfv_len);
+                }
+                }
+
                 return NGX_CHAIN_ERROR;
             }
         }


 




Copyright © Lexa Software, 1996-2009.