Welcome! Log In Create A New Profile

Advanced

Re: upstream timed out

Maxim Dounin
October 15, 2012 10:10AM
Hello!

On Mon, Oct 15, 2012 at 11:00:38AM +0400, Dmitry Y. Labutin wrote:

> Frontend nginx стоит в Москве. Backend nginx стоит в Нижнем Новгороде.
> Между ними по traceroute 10 хостов. На Frontend в error лог
> наблюдает вот такая картина.
>
> 2012/10/15 10:33:31 [error] 5438#0: *67542270 upstream timed out
> (110: Connection timed out) while connecting to upstream
> 2012/10/15 10:34:42 [error] 5436#0: *67548075 upstream timed out
> (110: Connection timed out) while connecting to upstream
> 2012/10/15 10:34:44 [error] 5437#0: *67544442 upstream timed out
> (110: Connection timed out) while connecting to upstream
> 2012/10/15 10:34:44 [error] 5436#0: *67548077 upstream timed out
> (110: Connection timed out) while connecting to upstream
> 2012/10/15 10:34:44 [error] 5437#0: *67548502 upstream timed out
> (110: Connection timed out) while connecting to upstream
> 2012/10/15 10:34:45 [error] 5437#0: *67546503 upstream timed out
> (110: Connection timed out) while connecting to upstream
> 2012/10/15 10:34:46 [error] 5437#0: *67546508 upstream timed out
> (110: Connection timed out) while connecting to upstream
>
> По статистике (делаю срезы раз в 10 минут) имеем в зависимости от
> количества посещение от 1 до 20 подобных ошибок за 10 минут.
> При этом активность - это порядка 30-50 запросов в секунду.
> Возьмем среднее. 10 ошибок в 10 минут и 40 запросов в секунду.
> Получаем примерно 0.04% проблемных ситуаций. Замечу, что статистика
> пингов между хостами ВСЕГДА показывала около 1.5% потерь (ping
> timeout), а сообщения в логах nginx на frontend появилась только в
> середине прошлой недели.
> Может быть подскажите, в какую сторону копать?

При 1.5% packetloss'е - 0.02% вероятность потери двух пакетов
подряд, т.е. где-то 9 секунд при отсутствии прочих факторов.
Самого по себе этого очевидно не достаточно, чтобы с вероятностью
0.04% наблюдались таймауты при установленном proxy_connect_timeout
в 15s. Так что скорее всего есть ещё какой-то фактор,
увеличивающий вероятность потери именно SYN-пакетов.

Одним из таких факторов может быть например statefull firewall
между nginx'ом и бекендом, у которого state'ы подходят к концу.
Многие firewall'ы в этом случае начинают drop'ать часть пакетов,
устанавливающих новые соединения.

Другая возможная причина - TIME_WAIT socket reuse, и плюс к этому
опять же statefull firewall, который про оный reuse не знает и в
результате SYN-пакеты считает не соответствующими имеющемуся у
него state'у (и drop'ает их).

В обоих случаях правильнее всего лечить методом выкидывания
statefull firewall'а (aka добавлением правила, пропускающего
соединения nginx->backend без создания state'а). В качестве
workaround'а можно также озаботится уменьшением количества
устанавливаемых соединений (см. [1]).

[1] http://nginx.org/r/keepalive/ru

--
Maxim Dounin
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

upstream timed out

Dmitry Y. Labutin October 15, 2012 03:02AM

Re: upstream timed out

Andrey Kopeyko October 15, 2012 03:12AM

Re: upstream timed out

Dmitry Y. Labutin October 15, 2012 04:14AM

Re: upstream timed out

Andrey Kopeyko October 15, 2012 06:48AM

Re: upstream timed out

kav October 15, 2012 07:00AM

Re: upstream timed out

Maxim Dounin October 15, 2012 10:10AM

Re: upstream timed out

kav October 15, 2012 10:20AM

Re: upstream timed out

Илья Шипицин October 18, 2012 01:12AM

Re: upstream timed out

Dmitry Y. Labutin October 18, 2012 01:26AM

Re: upstream timed out

Alex Vorona October 18, 2012 01:44AM

Re: upstream timed out

Dmitry Y. Labutin October 18, 2012 02:04AM

Re: upstream timed out

Илья Шипицин October 18, 2012 04:12AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 172
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready