Выбор ответа Middle Балансировка и nginx обновлено
Когда least_conn
Вопрос
Запросы к сервису очень разные: одни выполняются 10 мс, другие 10 секунд (отчёты). Какой алгоритм балансировки уменьшит перекос нагрузки?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: leastconn: запрос идёт туда, где меньше активных соединений. При разной длительности запросов round robin может накидать несколько тяжёлых на один сервер, а leastconn учитывает текущую занятость. iphash привязывает клиента к серверу и может перегрузить сервер, где оказались «тяжёлые» клиенты.
Варианты ответа
- round robin без весов, чтобы запросы шли строго по кругу
- least_conn: запрос идёт туда, где меньше активных соединенийправильный ответ
- ip_hash, чтобы клиенты с тяжёлыми отчётами распределились по хешу
- Случайный выбор одного сервера из пула для каждого запроса
Разбор
При разной длительности запросов round robin может накидать несколько тяжёлых на один сервер, а least_conn учитывает текущую занятость. ip_hash привязывает клиента к серверу и может перегрузить сервер, где оказались «тяжёлые» клиенты. Случайный выбор одного сервера не учитывает нагрузку; вариант «два случайных, взять менее загруженный» (random two least_conn) был бы хорош.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.