0

我想将最大 WS 连接数硬限制为 100。我正在编写一个 node.js 服务器,我不应该允许超过 100 个连接。

如何在触及系统ulimit的情况下限制 Websocket 连接数?

4

1 回答 1

1

只是为了扩展我添加的评论,我可以通过使用per-session ulimit -n命令来限制我的服务器打开的 websocket 连接的数量。

即,在启动我的 websocket 服务器之前,在控制台中我运行:

ulimit -n 12

..成功(运行ulimit -a确认)

然后我启动我的服务器并通过在命令前加上strace来跟踪它的系统调用:

strace -F -f -e trace=network ./myserver --port 33345

然后我进行许多并发客户端连接。在建立了大约 6 到 8 个连接后,进一步的客户端尝试失败,我在服务器 strace 输出中看到了这一点:

[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)

请注意,新的终端会话看不到这个 ulimit,我没有更改任何服务器范围的设置。

于 2019-11-06T15:44:59.750 回答