Оптимизация производительности балансировщика нагрузки

В этой статье вы найдете несколько рекомендаций по оптимизации балансировки нагрузки в зависимости от ваших целей и архитектуры приложения.

Используйте HTTP/2

Когда использовать?

В большинстве случаев HTTP/2 справляется с рабочей нагрузкой лучше, чем HTTP и HTTPS, благодаря конвейеризации и обработке соединений. Мы рекомендуем использовать его, если нет конкретных требований относительно HTTP или HTTPS.

Как это улучшает производительность?

HTTP/2 является основным обновлением старого протокола HTTP/1.x. Он был разработан в первую очередь для сокращения времени загрузки страницы и расхода ресурсов.

Его основные функции обеспечивают значительное улучшение производительности; например, HTTP/2 является бинарным (а не текстовым) и мультиплексированным, использует сжатие заголовков и поддерживает механизм приоритизации для доставки файлов.

Больше о HTTP/2 можно узнать в документации.

Отслеживайте производительность сервера

Когда использовать?

Мониторинг предоставляет критически важную информацию о работе системы и приложения и должен быть частью всех производственных установок.

Как это улучшает производительность?

Часто проблемы с производительностью вызваны нехваткой ресурсов на бэкэнде, а не самой балансировкой нагрузки или ее конфигурацией. Мониторинг позволяет выявить узкие места, влияющие на производительность вашей инфраструктуры, в том числе, когда ваша рабочая нагрузка превышает ресурсы сервера. Мониторинг позволяет определить и реализовать наиболее эффективную политику.

Как реализовать?

Существует несколько способов мониторинга производительности.

Попробуйте собрать больше информации об использовании CPU, памяти и диска. Если окажется, что выделенных ресурсов сервера не хватает для обработки рабочих нагрузок, масштабируйте свой сервер.

Масштабируйте серверы горизонтально и вертикально

Когда использовать?

Если вашему серверу бэкэнда не хватает ресурсов для того, чтобы справиться с рабочей нагрузкой, вам нужно подумать о масштабировании.

Как это улучшает производительность?

Не имеет значения, как ваш балансировщик нагрузки распределяет работу между серверами, если общая рабочая нагрузка слишком велика для них; поэтому важно, чтобы пул ресурсов на бэкэнде был достаточно большим.

Существует два вида масштабирования: горизонтальное (подразумевает увеличение количества серверов) и вертикальное (увеличивает доступные ресурсы существующих серверов). Балансировщики нагрузки облегчают горизонтальное масштабирование, но оба вида масштабирования улучшат производительность.

Как реализовать?

При горизонтальном масштабировании нужно добавить больше серверов.

На производительность также влияет тип сервера, который вы выбрали. Потому очень важно выбрать правильный VPS для приложения. К примеру, некоторые провайдеры предлагают оптимизированные серверы для обработки высоких нагрузок (например, для CI/CD и приложений с высокой производительностью).

Вертикальное масштабирование предполагает увеличение объема ресурсов текущего сервер – добавление RAM и CPU.

Выберите правильный алгоритм балансировки нагрузки

Когда использовать?

Балансировщики нагрузки могут распределять трафик по двум алгоритмам: round robin и least connections. Обычно по умолчанию используется round robin – это наиболее популярный алгоритм, он подходит в большинстве случаев.

Однако, если клиенты должны поддерживать связь с вашим приложением в течение длительного времени, вам может потребоваться настроить алгоритм least connections.

Как это улучшает производительность?

Алгоритм round robin итеративно отправляет запросы на каждый сервер по очереди, не принимая во внимание информацию о базовом сервере. Алгоритм least connections, как следует из названия, отправляет запросы на сервер с наименьшим количеством соединений.

Когда клиенты поддерживают соединения в течение некоторого времени, использование round robin может привести к накоплению параллельных подключений к серверу. Если количество подключений к серверу соответствует его нагрузке, алгоритм least connections будет распределять работу по серверам бэкэнда более равномерно, чем round robin.

Как реализовать?

Вы можете понять, какие серверы вам нужны, в зависимости от того, приводит ли большое количество подключений к повышению нагрузки. Поэтому сначала нужно отследить серверы, чтобы понять, как используются их ресурсы.

Читайте также:

Tags: