Re: Fwd: Nginx при обновлении большого числа пакетов APT
Maxim Dounin
mdounin на mdounin.ru
Пт Июл 29 13:04:39 UTC 2011
Hello!
On Fri, Jul 29, 2011 at 04:41:39PM +0400, Evgeny Sinelnikov wrote:
> 29 июля 2011 г. 16:24 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:
> > 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