[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