我想对WS连接的最大数量设置一个硬限制,即最大100个。我正在编写一个node.js服务器,其中我不应允许超过100个连接。
如何限制Websocket连接的数量不触摸系统 ulimit ?
答案 0 :(得分:1)
仅需扩展我添加的评论,我就可以使用每个会话 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,我尚未更改任何服务器范围的设置。