Re: логика fail_timeout в апстриме.

Maxim Dounin mdounin at mdounin.ru
Mon Mar 4 13:37:28 UTC 2013


Hello!

On Mon, Mar 04, 2013 at 05:06:08PM +0400, vinny13 at land.ru wrote:

> Здравствуйте.
> 
> Имеется слудующий апстрим:
> upstream web1 {	server 10.10.10.1   fail_timeout=180;	server 10.10.10.2;      }Т.е. насколько я понимаю, при возникновении хотя бы одного таймаута за 180 секунд, сервер должен "выбывать" из апстрима на те же 180 секунд. Но, судя по tcpdump'у на бекенде, этого не происходит - запросы идут с той же интенсивностью.  Собственно либо я неправильно понимаю логику работы fail_timeout,либо что-то не так делаю - проясните ситуацию пожалуйста.
> в nginx.conf во все location с proxy_pass инклудится proxy.conf в котором:
> proxy_connect_timeout     1;proxy_send_timeout         3;proxy_read_timeout         3; proxy_next_upstream error timeout invalid_header http_500 http_503;

(Во первых строках попрошу - отключите, пожалуйста, html в вашем 
почтовом клиенте.  То, что он пытается выдавать за plain text 
вариант - текстом можно считать только с очень большой натяжкой, 
и читать можно с трудом.)

Подозреваю, что в логе nginx'а должны быть регулярные сообщения 
"no live upstreams".  Это означает, что все сервера в соответствии 
с max_fails/fail_timeout оказались признаны неработающими.  В этом 
случае счётчики ошибок сбрасываются, и дальше nginx пытается 
ходить на то, что есть - в надежде, что кто-то из бекендов 
поднялся.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



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