Re: Fwd: Nginx при обновлении большого числа пакетов APT

Maxim Dounin mdounin на mdounin.ru
Пт Июл 29 12:24:34 UTC 2011


Hello!

On Fri, Jul 29, 2011 at 03:00:45PM +0400, Evgeny Sinelnikov wrote:

> 29 июля 2011 г. 13:31 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:

[...]

> > Вот тут есть патч, добавляющий "lingering_close always" и пару
> > дополнительных проверок в обычном случае:
> >
> > http://mailman.nginx.org/pipermail/nginx-devel/2011-July/001016.html
> >
> > В варианте "always" оно аналогично убранной проверке
> > r->lingering_close (т.е. lingering close используется всегда).  Но
> > насколько я понимаю конкретная проблема должна полечиться просто за
> > счёт дополнительных проверок в обычном случае.
> >
> > Если не сложно - потестируйте pls.
> 
> Я проверил, изменения доступны здесь:
> http://git.altlinux.org/people/sin/packages/nginx.git
> http://git.etersoft.ru/people/sin/packages/nginx.git
> 
> Да, всё, отлично. Режим, по умолчанию работает. При "lingering_close
> off" проблема стабильно воспроизводится. Новая проверка вида
> (r->lingering_close || r->header_in->pos < r->header_in->last ||
> r->connection->read->ready), вместо только r->lingering_close, решает
> проблему и без "lingering_close always".

Ок, спасибо.

> Кстати, связка "lingering_close always" и "lingering_timeout 0"
> приводит к ещё более страшным последствиям... ;)

Всмысле?

В сочетании с reset_timedout_connection могут быть неприятные эффекты - будет
закрывать соединения с RST, ибо таймаут истекает сразу.  Впрочем, то же будет
иметь место и при не-нулевом таймауте.  Наверное имеет смысл ещё вот такой
патч:

diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -2779,7 +2786,6 @@ ngx_http_lingering_close_handler(ngx_eve
                    "http lingering close handler");

     if (rev->timedout) {
-        c->timedout = 1;
         ngx_http_close_request(r, 0);
         return;
     }

Maxim Dounin



Подробная информация о списке рассылки nginx-ru