Crit error: sendfilev() failed (22: Invalid argument)

Igor Sysoev is at rambler-co.ru
Wed Sep 12 09:49:11 MSD 2007


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


More information about the nginx-ru mailing list