Быстрый ответ: 2 ^ 16 портов TCP, 64 КБ.
Проблемы с установленными в системе ограничениями - это проблема конфигурации, о которой уже говорилось в предыдущих комментариях.
Внутренние последствия для TCP не очень понятны (для меня). Каждый порт требует памяти для своего создания, входит в список и нуждается в сетевых буферах для передаваемых данных.
При 64-битных сеансах TCP издержки для экземпляров портов могут быть проблемой на 32-битном ядре, но не на 64-битном ядре (исправление здесь с радостью принято). Процесс поиска с сеансами 64 КБ может немного замедлить работу, и каждый пакет попадает в очереди таймера, что также может быть проблематичным. Хранилище для транзитных данных теоретически может увеличиваться до размеров окна, умноженного на порты (возможно, 8 ГБ).
Вероятно, вы видите проблему со скоростью соединения (упомянутой выше). TCP обычно требует времени, чтобы что-то делать. Однако это не обязательно. TCP-соединение, транзакция и отключение могут быть выполнены очень эффективно (проверьте, как сеансы TCP создаются и закрываются).
Существуют системы, которые передают десятки гигабит в секунду, поэтому масштабирование на уровне пакетов должно быть в порядке.
Есть машины с большим количеством физической памяти, поэтому все выглядит нормально.
Производительность системы, если она тщательно настроена, должна быть в порядке.
Серверная часть вещей должна масштабироваться аналогичным образом.
Я был бы обеспокоен такими вещами, как пропускная способность памяти.
Рассмотрим эксперимент, в котором вы входите на локальный хост 10000 раз. Затем введите символ. Весь стек через пользовательское пространство будет задействован для каждого символа. Активная зона обслуживания, вероятно, превысит размер кэша данных. Работа с большим количеством памяти может привести к нагрузке на систему ВМ. Стоимость переключения контекста может приближаться к секунде!
Это обсуждается во множестве других тем:
https://serverfault.com/questions/69524/im-designing-a-system-to-handle-10000-tcp-connections-per-second-what-problems