Количество одновременных запросов, которые может обработать сервер - PullRequest
0 голосов
/ 13 июля 2020

В книге «Компьютерные сети - подход сверху вниз» я только что изучил, что сокеты TCP однозначно идентифицируются по четырем параметрам:

  1. IP-адрес отправителя
  2. Порт отправителя number
  3. IP-адрес получателя
  4. Номер порта получателя

В случае сервера мы знаем, что IP-адрес сервера и номер порта фиксированы. Очевидно, что IP-адреса клиентов и номера портов будут отличаться. В случае нового запроса сервер откроет новый поток (чтобы открыть новый сокет TCP) для обработки этого запроса.

Мой вопрос в том, есть ли какие-либо вычисления, которые мы можем выполнить для расчета максимального количества клиентов одна серверная машина может справиться?

Спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Привет, это хороший вопрос.

Во-первых, если один поток обрабатывает одно соединение, то ограничение компьютера x86 будет очень низким. Это будет примерно 1000 для каждого процесса, поскольку виртуальная память ограничена 4 ГБ. Для x64 будет относительно выше. Но мы не хотим видеть переключение между потоками.

Итак, мы используем поток для обработки большого количества соединений, то есть мультиплексирования ввода-вывода. ограничение, мы называем это C10K и C10M , и мы решаем эти проблемы с помощью неблокирующего мультиплексирования ввода-вывода, такого как epoll или IOCP, а DPDK полезен для решения C10M.

Если вы хотите достичь большего числа подключений, тогда мы используем распределенные системы вместо одного сервера.

Это долгая история ограничений сервера, и я думаю, вы можете многому у них научиться.

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