Java: прослушивание одного порта с большим количеством потоков против прослушивания нескольких портов - PullRequest
0 голосов
/ 28 января 2019

Скажем, у меня есть Java-программа, которая прослушивает порт 8001, потребляет и выполняет некоторую обработку сообщения
Существует ли теоретический максимум на пропускную способность битов, обрабатываемых программой на этом порту?то есть вы выделяете поток для этого порта и можете масштабировать, добавляя больше потоков для прослушивания этого порта?Есть ли ограничение на количество потоков, которые вы можете выделить для этого порта?

Теперь, если действительно есть теоретический максимум на то, сколько вы можете масштабировать, добавляя больше потоков на конкретный порт, это можно преодолеть с помощьюпрограмма прослушивает дополнительные порты 8001 и 8002 и имеет в 2 раза больше потоков?Может ли ваша программа обслуживать в два раза больше запросов сейчас?

или эта пропускная способность порта по сравнению с портами не выдана, поскольку пропускная способность битов, поступающих в хост, ограничена сетевой картой?

1 Ответ

0 голосов
/ 28 января 2019

Вы можете обслуживать столько же одновременных соединений, сколько хотите, в одном сокете (***).Вы можете назначить поток каждому соединению, но имейте в виду, что в Java каждый поток потребляет около 2 МБ.

И поскольку мы говорим о масштабировании, добавление потоков магическим образом не добавляет ядра к вашему ЦП.

(***) Существует теоретический предел, так как число возможных IP-адресов, умноженное на количество возможных портов источника, конечно, но вам не хватит памяти, прежде чем его достигнуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...