Сколько сокетов соединений может быть на одном порту и на все системе?

И как получается удерживать миллионы соединений?
  • Вопрос задан
  • 5382 просмотра
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Сколько сокетов соединений может быть на одном порту

В TCP/IPv4 каждое соединение должно иметь уникальную комбинацию source IP + source port + destination IP + destination port, что даёт для одного порта на одном IP ограничение сверху в 232 + 16 соединений.
Сколько из этого можно практически (с приемлемой производительностью) держать на одной системе -- хз.
Ответ написан
Комментировать
Для входящего соединения создается новый сокет, поэтому лимит определяется в основном тем, сколько активных сокетов может быть в системе. Для каждого сокета требуется файловый дискриптор и некоторое количество системных буферов. Плюс, для обработки сетевых событий требуются процессорные мощности. При этом упереться можно в разные лимиты - самое первое, это ulimit'ы (по умолчанию в Linux пользовать может создать 1024 файловых дискриптора), они легко повышаются. В какой-то момент вы упретесь в лимиты ядра, и вам придется пересобирать ядро с кастомными параметрами. В конце концов, вы упретесь в физические лимиты машины (например в лимит на физическую память, которая требуется для системных буферов), если не упретесь раньше в лимиты по производительности. Поэтому "сколько" вопрос более риторический, смотря что вы хотите сделать. Если поставить рекорд - то можно собрать систему которая будет держать миллионы соединений. Реальная система на реальных запросах скорей всего раньше упрется в нехватку других ресурсов.
Ответ написан
Комментировать
Demanoidos
@Demanoidos
безнравственный извращенец с богатой фантазией
Миллионы соединений - это не про одну машину. Я так понимаю, вам интересно, как вайберы, вотсапы и телеграмы это делают.

Попытки соединений идут через диспатчер, и только потом уже обрабатываются каким-то конкретным компьютером из кластера. На одной железке этого никто не делает. И задача это достаточно сложная технически.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы