Проверьте реальные пределы запущенного процесса с помощью.
cat /proc/{pid}/limits
Максимальное значение для nofiles определяется ядром, следующее как root может увеличить максимальное значение до 100 000 «файлов», т.е. 100k CC
echo 100000 > /proc/sys/fs/file-max
Чтобы сделать его постоянным, отредактируйте /etc/sysctl.conf
fs.file-max = 100000
Затем вам нужно, чтобы сервер запросил больше открытых файлов, это отличается для каждого сервера. Например, в nginx вы устанавливаете
worker_rlimit_nofile 100000;
Перезагрузите nginx и проверьте / proc / {pid} / limit
Чтобы проверить это, вам нужно 100 000 сокетов в вашем клиенте, при тестировании вы ограничены количеством портов в TCP на IP-адрес.
Чтобы увеличить диапазон локальных портов до максимума ...
echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range
Это дает вам ~ 64000 портов для тестирования.
Если этого недостаточно, вам нужно больше IP-адресов. При тестировании на localhost вы можете привязать источник / клиент к IP-адресу, отличному от 127.0.0.1 / localhost.
Например, вы можете привязать ваших тестовых клиентов к IP-адресам, случайно выбранным от 127.0.0.1 до 127.0.0.5
Используя apache-bench вы бы установили
-B 127.0.0.x
Для сокетов Nodejs будет использоваться
localAddress
/ etc / security / limit.conf настраивает PAM: это обычно не имеет значения для сервера.
Если сервер перенаправляет запросы с использованием TCP, например, с использованием upstream или mod_proxy, сервер ограничен ip_local_port_range. Это легко может быть предел 32 000.