Что я такое недотюнил? (nginx при >6K rps)

RomanCh nginx-forum на nginx.us
Вт Окт 19 19:35:46 MSD 2010


Имеем следующее:

Nginx 0.8.50, работающий в режиме
балансировки нагрузки. В конфиге
несколько server{}-ов, каждый из них
слушает на своем порту и proxy_pass-ит на
один или несколько бекендов. В общем,
ничего сколь-нибудь сложного и
выдающегося.

Живет эта вся радость на паре весьма
бешеных железок, Xeon E7520 @ 1.87GHz, суммарно 32
ядра, сетевые карты - igb, 2 штуки (одна
смотрит в спрашивающую сторону, другая
- к бекендам). Железки запаренны между
собой CARP-ами. ОС - FreeBSD 8.1R, затюненная "по
самое немогу" по инструкции им. Игоря.

Суммарно на всю эту конструкцию
наливается около 12-14 тыс. запросов в
секунду, стабильным и ровным потоком
(то есть, по 6-7 тыс. rps на машинку).
Быстродействия бекендов хватает с
запасом, нагрузка на самих балансерах,
можно считать, нкакая, LA около 1.9 (это
при 32 ядрах), 92% idle по top-у. Одновременно
открытых коннектов - около 2000.

Проблемы начинаются тогда, когда я
переношу все эти 14 тыс. rps на одну
машинку из пары. Немедленно на nginx-е
появляются массово connect-таймауты к
бекендам. При этом нагрузка на самих
балансерах растет, вроде бы как, не
сильно (ну до 87% idle он нагружается, не
сильнее). Время в основном тратится на
system и interrupt.

Вопрос первый - не слишком ли много я
хочу от бедной железки?

Вопрос второй - что я такое не дотюнил? У
меня яркие идеи кончились ((

Буду благодарен за помощь.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,142358,142358#msg-142358




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