[Devel] Nginx при обновлении большого числа пакетов APT

Evgeny Sinelnikov sin на etersoft.ru
Пт Июл 29 15:05:13 MSD 2011


29 июля 2011 г. 6:36 пользователь Evgeny Sinelnikov <sin на etersoft.ru> написал:
...
> Просмотрев код nginx и поотлаживая его, на воспроизводимом примере
> (примерно каждый 100 пакет, как видно выше, стабильно отваливался), я
> нашёл точку, в которой возникает беда. Беда возникает при отключении
> соединения. В keep_alive режиме соединение на сервере закрывалось не
> сразу, а после некоторого числа итераций. Собственно проблема с
> закрытием возникает из-за использования в nginx SO_LINGER, небольшое
> описание этого режима я нашёл здесь:
>  http://kalinin.ru/programming/network/29_10_00.shtml
>
> В итоге я сделал такой патч:
> diff --git a/nginx/src/http/ngx_http_request.c
> b/nginx/src/http/ngx_http_request.c
> index 2cef4fa..e2973c8 100644 (file)
> --- a/nginx/src/http/ngx_http_request.c
> +++ b/nginx/src/http/ngx_http_request.c
> @@ -2146,7 +2146,7 @@ ngx_http_finalize_connection(ngx_http_request_t *r)
>         ngx_http_set_keepalive(r);
>         return;
>
> -    } else if (r->lingering_close && clcf->lingering_timeout > 0) {
> +    } else if (clcf->lingering_timeout > 0) {
>         ngx_http_set_lingering_close(r);
>         return;
>     }
...

Проблема проброшена и решена в апстриме:
http://mailman.nginx.org/pipermail/nginx-ru/2011-July/042025.html

-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Devel