Re: Непонимание как работает fail timeout на самом деле

Валентин Бартенев vbart на nginx.com
Вт Май 31 10:32:40 UTC 2016


On Tuesday 31 May 2016 02:28:17 Vadim Osipov wrote:
> Здравствуйте
> Столкнулся с такой ситуацией, что, видимо, не понимаю в каком случае
> срабатывает fail_timeout, max_fails.
> Как я это понимаю при моей конфигурации:
> например, я делаю 1 запрос http://localhost:80/mem/key10, вычисляется хэш,
> ему ставится в соответствие сервер из upstream - это 172.16.11.46:11211 (в
> моем случае), и если сервер завис, не отвечает или произошла ошибка
> соединения с сервером (машина выключена/не существует), то в течение 30
> секунд запросы на эту машину/сервер не идут.
> Однако, что получается в действительности - после того, как не удалось
> соединиться, начинает ретрансмит через 1 секунду, затем 2, потом (т.к. тут
> уже вступает в игру memcached_connect_timeout и ретрансмита между последней
> попыткой и новой не будет, т.к. тогда будет разница в 4 сек.) nginx
> рехэширует запрос/ключ, и он попадает на работающий сервер, делает запрос и
> отдает то, что есть в другом сервере (в моем случае, это 127.0.0.1:11211).
> 
> Так какой же вопрос ?
> Почему последующий запрос http://localhost:80/mem/key10 не идет сразу на
> 127.0.0.1:11211, а продолжает те же самые попытки - достучаться до
> 172.16.11.46:11211 ?
[..]

Если у вас настроено несколько рабочих процессов, то следующий запрос, если он 
сделан не в том же соединении, мог попасть в другой рабочий процесс, который 
ещё ничего не знает о том, что 172.16.11.46:11211 недоступен.

--
Валентин Бартенев


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