Что такое проблема TIME_WAIT-сокетов на уровне ядра Linux? Как бэкенд, совершающий миллионы исходящих HTTP-запросов к микросервисам в секунду, может полностью исчерпать диапазон эфемерных портов (ephemeral ports) и какими системными флагами sysctl это лечится?

Частые короткие TCP-соединения расходуют эфемерные порты и оставляют TIME_WAIT. Основное решение — reuse соединений и контроль нагрузки, а не бездумное уменьшение системных таймеров.

Короткий ответ

Что ответить на собеседовании

Частые короткие TCP-соединения расходуют эфемерные порты и оставляют TIME_WAIT. Основное решение — reuse соединений и контроль нагрузки, а не бездумное уменьшение системных таймеров.

Подробный разбор

Ответ с пояснениями

Частые короткие TCP-соединения расходуют эфемерные порты и оставляют TIME_WAIT. Основное решение — reuse соединений и контроль нагрузки, а не бездумное уменьшение системных таймеров.

Проверяют число соединений, адреса назначения, NAT и размер ip_local_port_range. TIME_WAIT предотвращает смешивание старых сегментов с новым соединением. Keep-alive и HTTP/2 уменьшают частоту создания соединений. tcp_tw_reuse применяют лишь с пониманием версии ядра и условий безопасности; tcp_fin_timeout не является таймером TIME_WAIT. Устаревший tcp_tw_recycle использовать нельзя. Миллионы запросов не обязательно требуют миллионов новых TCP-соединений.

Источник: www.kernel.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее