ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: upstream timed out



On 15.10.2012, at 18:08, Maxim Dounin <mdounin@xxxxxxxxxx> wrote:

> 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 добавлением правила, пропускающего 
при условии подконтрольности фаерволла или наличии методов воздействия 

если 10 хопов, да ещё с потерей, то мы имеем ещё одного любителя извращений, 
как то связь бек-енда с фронт-ендом через интернет 
уж простите мой французский ... 

> соединения 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@xxxxxxxxx
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.