Вопросы производительности большого количества подключений к одному порту - PullRequest
0 голосов
/ 08 октября 2010

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

Верно ли мое понимание того, что эта модель (сервер, прослушивающий один порт, который обрабатывает входящие соединения, а затем отвечает обратно по исходящему соединению, которое было создано при установлении клиентского соединения), - это способ работы баз данных / веб-серверов и т. Д. *

С уважением, Brian

1 Ответ

0 голосов
/ 08 октября 2010

Неважно, прослушивает ли сервер один порт или несколько портов. Сервер все еще должен установить полное соединение с сокетом для каждого клиента, который он принимает. ОС все еще должна направлять входящие пакеты на правильные конечные точки сокетов, и сокеты однозначно идентифицируются по комбинации пар IP / порт обеих конечных точек, поэтому проблем с производительностью не возникает, если конечные точки сервера используют разные порты.

Любые проблемы с производительностью будут связаны с тем, как код сервера обрабатывает эти сокетные соединения. Если он прослушивает только один порт и принимает клиентов на этом порту с помощью простого цикла accept () в одном потоке, то скорость, с которой он может принимать клиентов, ограничивается этим циклом. Как правило, серверы порождают рабочие потоки для каждого принятого клиента, который сам по себе имеет издержки производительности, если пул потоков не используется. Если серверу необходимо одновременно обрабатывать большое количество клиентов, он должен использовать перекрывающиеся порты ввода / вывода или порты завершения ввода / вывода для более эффективной обработки соединений.

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