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