Как работает механизм SO_REUSEPORT на уровне сокетов Linux и как он позволяет процессам слушать один и тот же порт без блокировок?

SO_REUSEPORT позволяет нескольким сокетам привязаться к одному адресу и порту при соблюдении условий Linux. Ядро распределяет входящие соединения между отдельными слушателями, уменьшая конкуренцию за общий accept.

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

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

SO_REUSEPORT позволяет нескольким сокетам привязаться к одному адресу и порту при соблюдении условий Linux. Ядро распределяет входящие соединения между отдельными слушателями, уменьшая конкуренцию за общий accept.

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

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

SO_REUSEPORT позволяет нескольким сокетам привязаться к одному адресу и порту при соблюдении условий Linux. Ядро распределяет входящие соединения между отдельными слушателями, уменьшая конкуренцию за общий accept.

Опцию устанавливают на каждом участвующем сокете до bind; для защиты от перехвата порта требуется совпадение effective UID. Каждый worker может иметь собственный listening socket. Распределение можно настраивать через поддерживаемые BPF-механизмы. Формулировка «без блокировок» слишком абсолютна: механизм снижает определённую конкуренцию, но не устраняет всю синхронизацию ядра и не гарантирует идеальный баланс при любой нагрузке.

Источник: man7.org.

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

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

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

Подробнее