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