Имеем следующее:
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.
Вопрос первый - не слишком ли много я хочу от бедной железки?
Вопрос второй - что я такое не дотюнил? У меня яркие идеи кончились ((
Буду благодарен за помощь.