Наш системный администратор сказал
«Apache использует TCP-порт для каждого соединения»
поэтому сервер может одновременно обслуживать 65534 (MAX). это правильно?
Я думаю, что Apache использует только 80 или 443. Но он использует много файловых дескрипторов (не портов), не так ли?
/sbin/sysctl -a | grep fs.file-max
fs.file-max = 123456789
Макс, я думаю, не могли бы вы дать мне немного информации об этом?
Я думаю, ваш системный администратор немного не понимает, что такое порт и файловый дескриптор.
Каждый сервер имеет 65536 пронумерованных портов. 0
через 65535
. Программа может Слушать на порт для запросов от клиентов и обрабатывать их соответствующим образом. Только одна программа может прослушивать порт в любой момент времени. В этом отношении порты представляют собой ограниченный ресурс, хотя большинство из этих портов используются крайне редко.
Когда клиент подключается к серверу, для подключения, представляющего сокет, создается файловый дескриптор. Вы можете читать и писать в этот сокет, как любой другой обычный файл. Количество доступных файловых дескрипторов огромно, но обычно существует ограничение на количество файловых дескрипторов, которые одно конкретное приложение можешь использовать.
Также следует отметить, что Apache можно настроить для одновременного прослушивания более чем одного порта.
TCP-поток однозначно идентифицируется 4 числами:
обратите внимание, что клиент также использует номер порта, что помогает разделить потоки.
Типичный случай состоит из сервера с известным (по DNS) IP-адресом и известным номером порта, затем каждый клиент имеет свой IP-номер, а номер порта, используемый клиентом, выбирается полуслучайно. Это позволяет одному серверу подключаться к множеству разных клиентов, а также один клиент может иметь несколько подключений к одному и тому же порту на одном сервере, просто используя разные порты на стороне клиента.