Re: А fail_timeout в ngx_http_upstream_module работает?

Maxim Dounin mdounin на mdounin.ru
Вс Июл 8 19:30:58 UTC 2012


Hello!

On Sun, Jul 08, 2012 at 09:04:43PM +0400, Dmitry Y. Labutin wrote:

> Доброго времени суток.
> 
> nginx version: nginx/1.2.2
> built by gcc 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
> configure arguments: --prefix=/opt/nginx
> --without-http_rewrite_module --without-http_gzip_module
> 
> nginx занимается только балансировкой каналов - перекидыванием на
> резервный, в случае недоступности основного.

Ok, кажется я понял в чём у вас проблема.  Сейчас, если клиент 
прерывает соединение раньше, чем получен ответ от upstream'а (или 
ошибка), соединение с upstream'ом закрывается как успешное.  Если 
это происходит во время очередной проверки после fail_timeout - 
nginx считает проверку успешной и начинает рассматривать бекенд 
как живой, и соответстввенно на него уходит неограниченное 
количество запросов (пока снова не случится ошибка).

При уровне логгирования "info" это должно быть видно, перед каждым 
случаем "больше одного таймаута от процесса" будут сообщения про 
"client prematurely closed connection".

(Just in case, простейшее решение - сделать proxy_connect_timeout 
меньше, чтобы клиенты не уходили недождавшись ответа.)

Maxim Dounin

> 
> Дмитрий
> 
> 08.07.2012 19:43, Maxim Dounin пишет:
> >Hello!
> >
> >On Sun, Jul 08, 2012 at 01:40:25PM +0400, Dmitry Y. Labutin wrote:
> >
> >>Да, логи были после сразу после рестарта nginx. Но вот уже прошло
> >>несколько часов и обращения стали конечно реже, но все равно
> >>значительно чаще чем раз в 10 минут:
> >>2012/07/08 13:29:30 [error] 10901#0: *163989 connect() failed (110:
> >>Connection timed out) while connecting to upstream
> >>2012/07/08 13:29:30 [error] 10901#0: *163994 connect() failed (110:
> >>Connection timed out) while connecting to upstream
> >>2012/07/08 13:29:33 [error] 10901#0: *164029 connect() failed (110:
> >>Connection timed out) while connecting to upstream
> >
> >nginx какой версии?
> >
> >[...]
> >
> >Maxim Dounin
> >
> >p.s. Please do not top-post.  Thank you.
> >
> >>
> >>Дмитрий
> >>
> >>08.07.2012 13:16, Maxim Dounin пишет:
> >>>Hello!
> >>>
> >>>On Sun, Jul 08, 2012 at 09:47:09AM +0400, Dmitry Y. Labutin wrote:
> >>>
> >>>[...]
> >>>
> >>>>     upstream backend {
> >>>>	server www4.company.ru backup;
> >>>>	server www1.company.ru fail_timeout=600s;
> >>>>	
> >>>>	keepalive 64;
> >>>>     }
> >>>
> >>>[...]
> >>>
> >>>>Именно сейчас www1.company.ru недоступен - лег канал.
> >>>>Я надеялся, что попытки nginx отправить запрос пользователей через
> >>>>www1.company.ru будут идти раз в 10 минут, но на деле, там очень
> >>>>много вот такого в error.log:
> >>>>2012/07/08 09:42:02 [error] 10904#0: *5715 connect() failed (110:
> >>>>Connection timed out) while connecting to upstream, client:
> >>>>212.33.247.144, ...
> >>>
> >>>[...]
> >>>
> >>>>2012/07/08 09:42:10 [error] 10904#0: *5737 connect() failed (110:
> >>>>Connection timed out) while connecting to upstream, client:
> >>>>85.26.234.5, ...
> >>>>
> >>>>
> >>>>Вопрос - почему nginx делает так много попыток соединения через
> >>>>www1.company.ru ? Ведь он же получил Connection timed out и должен
> >>>>был в соответствии с fail_timeout=600s 10 минут туда не соваться!!!
> >>>>Или я что-то не так настроил?
> >>>
> >>>Канал лёг когда?  По получению первой ошибки nginx перестаёт
> >>>отправлять запросы на недоступный бекенд, но уже отправленные -
> >>>продолжают ждать таймаутов и соответственно отмечаться в error
> >>>log'е когда дождутся.  В вашем случае proxy_connect_timeout
> >>>используется по умолчанию, 60 секунд, так что приведённая выдержка
> >>>из лога не позволяет утверждать, что что-то не так.
> >>>
> >>>После того, как уже отправленные запросы кончаться - в современных
> >>>версиях будет 1 запрос на рабочий процесс в fail_timeout секунд.
> >>>
> >>>Maxim Dounin
> >>>
> >>>_______________________________________________
> >>>nginx-ru mailing list
> >>>nginx-ru at nginx.org
> >>>http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >>>
> >>
> >>
> >>_______________________________________________
> >>nginx-ru mailing list
> >>nginx-ru at nginx.org
> >>http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> >_______________________________________________
> >nginx-ru mailing list
> >nginx-ru at nginx.org
> >http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> 
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



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