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

Maxim Dounin mdounin на mdounin.ru
Вс Июл 8 09:16:29 UTC 2012


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