Я застрял, пытаясь установить более 65536 исходящих TCP-соединений из коробки Linux (RedHat5).
Я уже настроил как исходящие, так и принимающие поля, чтобы разрешить достаточно дескрипторов файлов.
Я не верю, что существует проблема на принимающей стороне - у меня есть несколько целевых ящиков, каждый с несколькими IP-адресами, и я использую несколько портов.
Что касается исходящей стороны, я не верю, что достигаю предела для каждого IP-адреса - я использую несколько IP-адресов и портов (я открываю соединения с портов 30 000–60 000 для каждого из нескольких IP-адресов).
Есть ли какой-то настраиваемый параметр ядра Linux, который мне не хватает? Или какой-то принципиальный предел в TCP?
Ошибка в том, что мое приложение для открытия соединений зависает при вызове connect ().
Спасибо за любую помощь NickB
Вот блог, в котором кто-то получил> 1 000 000 исходов из коробки.
В Части 1 мы установили диапазон «1024 65535» - это означает, что доступно 65535-1024 = 64511 непривилегированных портов. Некоторые из них будут использоваться другими процессами, но мы никогда не получим более 64511 клиентских подключений, потому что у нас закончатся порты.
...
Итак, давайте создадим 17 новых IP-адресов с намерением установить 62 000 подключений с каждого, что дает нам в общей сложности 1 054 000 подключений.
Протокол TCP использует только 16 бит как для порта назначения, так и для порта источника. Не будет возможности открыть более 65536 портов одновременно - даже в Linux.
В этом контексте «единый интерфейс» означает единое сетевое обслуживание с назначенным ему единственным IP-адресом. Каждое исходящее TCP-соединение привязано к отдельному порту, поэтому ваш пример невозможен.