Просто чтобы добавить комментарий, который я добавил, я могу ограничить количество подключений через веб-сокет, которые мой сервер открывает, используя команду за сеанс ulimit -n
.
Т.е.,перед запуском моего сервера веб-сокетов в консоли я запускаю:
ulimit -n 12
.., что успешно (выполнить ulimit -a
для подтверждения)
Затем я запускаю свой сервери отследить системные вызовы, добавив к команде префикс strace :
strace -F -f -e trace=network ./myserver --port 33345
Затем я выполняю много одновременных клиентских подключений. После того, как примерно с 6 до 8 установлены соединения, дальнейшие попытки клиента терпят неудачу, и я вижу это в выходных данных сервера:
[pid 24344] accept4(10, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EMFILE (Too many open files)
[pid 24344] accept4(10, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = 9
[pid 24344] accept4(10, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
Обратите внимание, что новые сеансы терминала не видят этот предел, я не изменилсялюбые настройки сервера.