ПРОЕКТЫ 


  АРХИВ 


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 04:41:39PM +0400, Evgeny Sinelnikov wrote:

> 29 июля 2011 г. 16:24 пользователь Maxim Dounin <mdounin@xxxxxxxxxx> написал:
> > Hello!
> >
> > On Fri, Jul 29, 2011 at 03:00:45PM +0400, Evgeny Sinelnikov wrote:
> >
> >> Кстати, связка "lingering_close always" и "lingering_timeout 0"
> >> приводит к ещё более страшным последствиям... ;)
> >
> > Всмысле?
> 
> Ну, вроде ожидание включено, а таймаут равен нулю. Противоречивая пара 
> настроек.

Начинает ожидать (и даже вычитывает из сокета, если есть что), но 
сразу за этим срабатывает таймаут.  Тут я проблем не вижу, 
наоборот - предыдущий подход с lingering_timeout 0 отключающим 
lingering мне кажется странным.

Вопрос был именно о том, к каким "более страшным последствиям" это 
приводит.

> > В сочетании с 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;
> >     }
> >
> 
> Это я сегодня проверить уже не успею... Каковы условия проверки, тоже
> не совсем понял. "reset_timedout_connection on" и "lingering_timeout
> 0" без этого патча может может себя вести не корректно, так?

При и "reset_timedout_connection on;" соединение закрывается с RST 
если использовался lingering close и истёк lingering_timeout.  
Проблема как раз должна хорошо воспроизводится при использовании

    reset_timedout_connection on;
    lingering_close always;
    lingering_timeout 0;

в конфиге (собственно, я предполагаю что под "более страшными 
последствиями" выше имеется ввиду именно эта проблема).

Патч отключает reset_timedout_connection если таймаут случился при 
lingering close, т.е. проблема должна перестать воспроизводится.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.