Механизм SOREUSEPORT позволяет нескольким сокетам, обычно из разных процессов, привязываться к одному и тому же IP-адресу и порту. adllm.app Когда SOREUSEPORT включён для нескольких сокетов, слушающих на одном адресе и порту, происходит следующее: adllm.app
- Каждый процесс создаёт и управляет своим независимым слушающим сокетом. adllm.app
- Ядро Linux распределяет входящие соединения (для TCP) или датаграммы (для UDP) между этими слушающими сокетами. adllm.app
Распределение обычно основано на хэше четырёхкомпонентного описания соединения (источник IP, источник порта, назначение IP, назначение порта). adllm.app
Некоторые преимущества использования SO_REUSEPORT:
- Возможность принимать больше одновременных соединений за счёт распределения их между несколькими сокетами или рабочими процессами. codemia.io
- Улучшение производительности, так как несколько потоков или процессов могут обрабатывать входящие соединения одновременно. codemia.io
- Поддержка обновлений приложений без простоев: новые процессы могут запускаться и привязываться к порту, в то время как старые процессы всё ещё обрабатывают существующие соединения и постепенно закрываются. adllm.app
SO_REUSEPORT доступен в ядрах Linux версии 3.9 и новее. adllm.app codemia.io