Максимальное количество запросов в секунду с Google Load Balancer

В документации GCP Google утверждает, что поддерживает до 1 миллиона запросов в секунду. Однако моя команда в рамках проекта решила протестировать как региональный HTTPS LB, так и глобальный HTTPS LB.

Вот некоторые результаты, которые мы получили, используя 7 клиентов против 4n2d-highcpu-64виртуальная машина с2TB - SSD Persistent Diskдля получения случайного ключа. В течение 30-х и 4300 длительно сохранялись связи;

  1. Без балансировщика нагрузки каждый экземпляр возвращал в среднем680k qps.
  2. При использовании регионального балансировщика нагрузки HTTPS с серверной службой 4vms результаты были примерно150k qps.
  3. Используя глобальный балансировщик нагрузки HTTPS с теми же 4 виртуальными машинами и без Cloud Armor, в среднем205k qps.

Поэтому мои вопросы заключаются в следующем:

  1. Есть ли что-нибудь в конфигурации Load-balancer, ответственное за это регулирование?

  2. Есть ли какая-либо документация по рекомендуемой архитектуре или рекомендациям по достижению не менее 1 миллиона запросов в секунду с помощью балансировщика нагрузки?

скриншот результата

скриншот результата

1 ответ

Тест миллиона подключений Google Cloud (см. также примечания к сценариям) использовал значительно больше экземпляров. 64 ВМ в качестве клиентов, 200 ВМ веб-серверов. При скорости 5000 запросов в секунду на экземпляр серверные части остаются управляемыми, что снижает вероятность проблем с масштабированием.

Учитывайте исчерпание портов TCP/UDP. Если исходный IP-адрес, IP-адрес назначения и порт назначения остаются прежними, для сокетов будет только от 50 до 60 тыс. исходных портов.

Убедитесь, что тест без балансировщика нагрузки фактически проходит через тот же стек IP, что и удаленный тест. Существуют накладные расходы на установку сокетов, создание пакетов и вообще на работу с сетевым стеком.

Измерьте задержку запроса и сети. Миллион в секунду означает, что запрос должен обслуживаться каждую микросекунду во всех процессах обслуживания. Даже относительно небольшая задержка в сети резко снизит пропускную способность по сравнению с почти нулевой задержкой при нахождении в сети.

Однако миллион запросов — бесполезная маркетинговая цифра. Никакой реальной работы это не дает: «Каждый веб-ответ имел размер 1 байт, не считая заголовков http». На самом деле выполнение чего-либо приведет к исчерпанию некоторых других ресурсов, таких как IOPS хранилища, памяти или ЦП, задолго до мифического миллиона.

Определите, на основе текущего использования приложений и планирования организации, сколько запросов в секунду или подключений вам потребуется. Не стесняйтесь округлять значения при планировании мощности, но умножение, возможно, в 100 или 1000 раз без обоснования не имеет смысла.

Для ощущения масштаба эта самая сеть Stack Exchange часто попадает в топ веб-сайтов в Интернете по посещаемости. Но максимальное количество одновременных WebSockets составляет «всего» около 600000. А балансировщики нагрузки достигают пиковой скорости 4500 запросов в секунду. Миллион в секунду был бы намного больше.