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

keepalive к upstream

Вопрос

На сервере с nginx десятки тысяч соединений в TIME_WAIT к бэкендам, а латентность растёт. Что вероятнее всего не настроено?

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

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

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

Коротко

Правильный ответ: Keepalive к upstream: keepalive, HTTP/1.1 и пустой Connection. По умолчанию nginx ходит к бэкенду по HTTP/1.0 и закрывает соединение после каждого запроса: на каждый запрос новый TCP-хендшейк и сокет в TIMEWAIT.

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

  1. worker_processes auto и worker_connections под число ядер
  2. gzip on для ответов бэкенда, чтобы соединения освобождались быстрее
  3. client_max_body_size и буферы тела, из-за которых соединения висят
  4. Keepalive к upstream: keepalive, HTTP/1.1 и пустой Connectionправильный ответ

Разбор

По умолчанию nginx ходит к бэкенду по HTTP/1.0 и закрывает соединение после каждого запроса: на каждый запрос новый TCP-хендшейк и сокет в TIME_WAIT. Пул keepalive-соединений это лечит. Число воркеров, сжатие и лимит размера тела к этому не относятся.

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

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