ПРОЕКТЫ 


  АРХИВ 


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: Проксирывание и tcp стек.



Hello!

On Fri, Dec 24, 2010 at 10:18:26AM +0300, duke wrote:

> Добрый день!
> 
> На днях получил забавный опыт.
> Есть сайт который надо было тупо запросксирывать и балансирывать загрузку
> между 6 бекэндами.
> При этом вознкла такая проблема: в логах стречались очень частые таймауты,
> при этом нагрузка на бекэнды была не вилика.
> Все запросы шли с одного ип до бекэнодов.
> 
> Для диагностики сетети (неизвестно что было межу серверами), я пробывал
> утилитой hping устанавливать соеденение с одним из бекэндов, ответ от
> которго меня часто удивлял.
> То есть я отпарляю tcp пакет с флагом SYN... и как сложилось по традиции жду
> в ответ SYN ACK. Но внезапно в ответ получаю что то типа ответа от веб
> сервера (запроса самого еше и небыло, tcp флаги в ответе например "ACK FIN
> PUSH" либо еше какие отличные от "SYN ACK"). То есть явно я угодил в "чужую"
> tcp сессию. Это повторялось часто, причем были и нормальные tcp хендшейки но
> через раз два.

Если я правильно понимаю что делает hping (отправляет произвольные 
пакеты с какими скажешь параметрами миную tcp-стек системы, и 
слушает произвольные ответы через bpf/pcap), то ничего 
удивительного в полученном результате нет.  Вы отправили пакет, а 
какой-то пролетающий мимо чужой пакет приняли за ответ.

> net.ipv4.ip_local_port_range уже подкрутили....
> 
> Может есть у кого идеи что еше можно сделать?

1. Если несмотря на увеличение port range локальных портов всё 
равно не хватает - включить reuse/recycle для соединений в 
TIME_WAIT.

2. Убедиться, что между фронтендом и бекендами не установлен 
statefull firewall.  Если установлен - убрать или добавить исключение 
чтобы соединения frontent -> backend проходили через firewall без 
создания state'ов.  В самом крайнем случае - убедиться, что 
state'ов достаточно, и сильно уменьшить таймауты для TIME_WAIT.

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

Maxim Dounin

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


 




Copyright © Lexa Software, 1996-2009.