ПРОЕКТЫ 


  АРХИВ 


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: Fwd: Nginx при обновлении бо льшого числа пакетов APT



Hello!

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

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

[...]

> > Вот тут есть патч, добавляющий "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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.