【问题标题】:How to limit number of Websocket connection using websockets/ws lib?如何使用 websockets/ws lib 限制 Websocket 连接的数量?
【发布时间】:2019-11-07 12:14:24
【问题描述】:

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

不接触系统ulimit如何限制Websocket连接数?

【问题讨论】:

  • 用户ulimit怎么样,例如ulimit -n 110
  • @DarrenSmith 我也在其他端口运行其他服务器。所以我不能改变 ulimit。

标签: node.js websocket ws


【解决方案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,我没有更改任何服务器范围的设置。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-11-17
  • 2019-01-12
  • 2023-01-17
  • 1970-01-01
  • 2023-01-19
  • 2021-09-16
  • 2022-07-14
  • 2015-03-03
相关资源
最近更新 更多