В течение нескольких дней мы сражались с HAProxy в Amazon EC2; опыт до сих пор был отличным, но мы застряли на сжатии большей производительности из балансировки нагрузки программного обеспечения. Мы не являемся обычным свиданием в сети Linux (обычно мы являемся магазином .NET), но мы до сих пор придерживались своих собственных целей, пытаясь установить правильные ulimits, проверять сообщения ядра и tcpdumps для любых нарушений. До сих пор мы достигли плато около 1700 запросов/сек, после чего количество тайм-аутов клиентов изобилует (для этой цели мы использовали и настраивали httperf). Сотрудник и я слушали самый последний подкаст Stack Overflow, в котором основатели Reddit отмечают, что весь их сайт работает с одним узлом HAProxy и что он пока не стал узким местом. Ack! Либо есть не так много одновременных запросов, мы делаем что-то ужасно неправильно, или общий характер EC2 ограничивает сетевой стек экземпляра Ec2 (мы используем большой тип экземпляра). Учитывая тот факт, что и Джоэл, и основатели Reddit согласны с тем, что сеть, вероятно, будет ограничивающим фактором, возможно ли это ограничение, которое мы видим?Балансировка нагрузки в Amazon EC2?
Любые мысли очень ценятся!
Редактировать Похоже, что фактическая проблема не была, по сути, узлом балансировки нагрузки! В этом случае виновником на самом деле были узлы, работающие с httperf. Поскольку httperf строит и разрывает сокет для каждого запроса, он тратит на процессор большое количество процессорного времени. Когда мы столкнулись с частотой запросов выше, TCP FIN TTL (по умолчанию 60 с) сохранял сокеты слишком долго, а значение по умолчанию для ip_local_port_range было слишком низким для этого сценария использования. В принципе, через несколько минут клиентского (httperf) узла постоянно создавал и уничтожал новые сокеты, количество неиспользуемых портов закончилось, а последующие «запросы» были обнулены на этом этапе, что дало низкие номера запросов/сек и большую сумму ошибок.
Мы также посмотрели nginx, но мы работаем с RighScale, и у них есть сценарии для загрузки для HAProxy. О, и у нас слишком ограниченный срок (конечно), чтобы отключить компоненты, если это не будет абсолютно необходимым. К счастью, находясь на AWS, мы можем тестировать другую установку, используя nginx параллельно (если это оправдано), и сделать коммутатор на ночь позже.
This page хорошо описывает каждую из переменных sysctl (в этом случае были настроены параметры ip_local_port_range и tcp_fin_timeout).
Марк, вы должны написать свой опыт с настройкой этого материала и разместить их где-нибудь (есть ли в вашей компании блог?). Похоже, это может быть полезно многим людям. Упрощенный вопрос. – SquareCog 2008-11-07 06:55:56
Ваша ссылка не работает. – Ztyx 2015-05-19 19:20:14
@Ztyx спасибо! Просто обновил его. Я пошел на поиски более нового, более современного источника, похоже, что на исходном сайте по-прежнему довольно высокий PageRank, а контент по-прежнему приличный, поэтому я просто исправляю его, чтобы отразить новый URL. – 2015-05-20 21:27:35