Предполагая бесконечную производительность от аппаратного обеспечения, может ли поддержка ящиков Linux> 65536 открыть TCP-соединения?Каково теоретическое максимальное количество открытых TCP-соединений, которые может иметь современный ящик Linux?
Я понимаю, что число эфемерных портов (< 65536) ограничивает количество подключений от одного локального IP-адреса до одного порта на одном удаленном IP-адресе.
Кортеж (локальный IP-адрес, локальный порт, удаленный IP-адрес, удаленный порт) - это то, что однозначно определяет TCP-соединение; это означает, что более 65 тыс. соединений могут поддерживаться, если более чем один из этих параметров является бесплатным. например соединения с одним номером порта на нескольких удаленных хостах из нескольких локальных IP-адресов.
Есть ли еще 16-битный лимит в системе? Возможно, число дескрипторов файлов?
Теоретически вы можете иметь исходящие соединения более 64 тыс., Если вы (а) используете SO_REUSEADDR и (б) предназначаете для разных IP-адресов назначения. Но ограничения памяти ядра, вероятно, остановят вас в первую очередь. – Darron
@ Darron Я думал, что SO_REUSEADDR был привязан к серверам при перезапуске? – Will
Да, это тоже. Он в основном расслабляет ранние проверки конфликтов адресов для новых сокетов. – Darron