Максимальное количество запросов в секунду с Google Load Balancer
В документации GCP Google утверждает, что поддерживает до 1 миллиона запросов в секунду. Однако моя команда в рамках проекта решила протестировать как региональный HTTPS LB, так и глобальный HTTPS LB.
Вот некоторые результаты, которые мы получили, используя 7 клиентов против 4n2d-highcpu-64
виртуальная машина с2TB - SSD Persistent Disk
для получения случайного ключа. В течение 30-х и 4300 длительно сохранялись связи;
- Без балансировщика нагрузки каждый экземпляр возвращал в среднем
680k qps
. - При использовании регионального балансировщика нагрузки HTTPS с серверной службой 4vms результаты были примерно
150k qps
. - Используя глобальный балансировщик нагрузки HTTPS с теми же 4 виртуальными машинами и без Cloud Armor, в среднем
205k qps
.
Поэтому мои вопросы заключаются в следующем:
Есть ли что-нибудь в конфигурации Load-balancer, ответственное за это регулирование?
Есть ли какая-либо документация по рекомендуемой архитектуре или рекомендациям по достижению не менее 1 миллиона запросов в секунду с помощью балансировщика нагрузки?
1 ответ
Тест миллиона подключений Google Cloud (см. также примечания к сценариям) использовал значительно больше экземпляров. 64 ВМ в качестве клиентов, 200 ВМ веб-серверов. При скорости 5000 запросов в секунду на экземпляр серверные части остаются управляемыми, что снижает вероятность проблем с масштабированием.
Учитывайте исчерпание портов TCP/UDP. Если исходный IP-адрес, IP-адрес назначения и порт назначения остаются прежними, для сокетов будет только от 50 до 60 тыс. исходных портов.
Убедитесь, что тест без балансировщика нагрузки фактически проходит через тот же стек IP, что и удаленный тест. Существуют накладные расходы на установку сокетов, создание пакетов и вообще на работу с сетевым стеком.
Измерьте задержку запроса и сети. Миллион в секунду означает, что запрос должен обслуживаться каждую микросекунду во всех процессах обслуживания. Даже относительно небольшая задержка в сети резко снизит пропускную способность по сравнению с почти нулевой задержкой при нахождении в сети.
Однако миллион запросов — бесполезная маркетинговая цифра. Никакой реальной работы это не дает: «Каждый веб-ответ имел размер 1 байт, не считая заголовков http». На самом деле выполнение чего-либо приведет к исчерпанию некоторых других ресурсов, таких как IOPS хранилища, памяти или ЦП, задолго до мифического миллиона.
Определите, на основе текущего использования приложений и планирования организации, сколько запросов в секунду или подключений вам потребуется. Не стесняйтесь округлять значения при планировании мощности, но умножение, возможно, в 100 или 1000 раз без обоснования не имеет смысла.
Для ощущения масштаба эта самая сеть Stack Exchange часто попадает в топ веб-сайтов в Интернете по посещаемости. Но максимальное количество одновременных WebSockets составляет «всего» около 600000. А балансировщики нагрузки достигают пиковой скорости 4500 запросов в секунду. Миллион в секунду был бы намного больше.