Выбор ответа Middle Балансировка и nginx обновлено

Когда least_conn

Вопрос

Запросы к сервису очень разные: одни выполняются 10 мс, другие 10 секунд (отчёты). Какой алгоритм балансировки уменьшит перекос нагрузки?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: leastconn: запрос идёт туда, где меньше активных соединений. При разной длительности запросов round robin может накидать несколько тяжёлых на один сервер, а leastconn учитывает текущую занятость. iphash привязывает клиента к серверу и может перегрузить сервер, где оказались «тяжёлые» клиенты.

Варианты ответа

  1. round robin без весов, чтобы запросы шли строго по кругу
  2. least_conn: запрос идёт туда, где меньше активных соединенийправильный ответ
  3. ip_hash, чтобы клиенты с тяжёлыми отчётами распределились по хешу
  4. Случайный выбор одного сервера из пула для каждого запроса

Разбор

При разной длительности запросов round robin может накидать несколько тяжёлых на один сервер, а least_conn учитывает текущую занятость. ip_hash привязывает клиента к серверу и может перегрузить сервер, где оказались «тяжёлые» клиенты. Случайный выбор одного сервера не учитывает нагрузку; вариант «два случайных, взять менее загруженный» (random two least_conn) был бы хорош.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.