| 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
 |