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
|