Как ограничить количество соединений Websocket с помощью websockets / ws lib? - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу установить жесткое ограничение на максимальное количество подключений WS до максимум 100. Я пишу сервер node.js, на котором не должно быть разрешено более 100 подключений.

Как ограничить количество подключений к Websocket без касания системы ulimit ?

1 Ответ

1 голос
/ 06 ноября 2019

Просто чтобы добавить комментарий, который я добавил, я могу ограничить количество подключений через веб-сокет, которые мой сервер открывает, используя команду за сеанс 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)

Обратите внимание, что новые сеансы терминала не видят этот предел, я не изменилсялюбые настройки сервера.

...