os x 上的 node.js socket.io 服务器无法连接超过 120 个客户端

标签 node.js nginx socket.io osx-yosemite

我正在编写 socket.io-client node.js 机器人应用程序,以测试同样在 node 下运行的基于 socket.io 的服务器应用程序的性能。

服务器通常运行 ubuntu linux,但我也在我的本地开发机器上安装和配置了相同的服务器应用程序(node.js、nginx、socket.io)。

如果我启动我的 bot-“脚本”并启动 200 个创建到服务器的单独连接的 bot,如果我对真实服务器(即 linux 服务器)执行此操作,我没有任何问题。

但是,如果我连接到本地基于 os x 的“服务器”,我无法真正超过 ~120 个连接。

我遇到断开连接、陈旧的套接字和断开连接/重新连接的无限循环,在 socket.io 的标准设置下,这将需要越来越长的时间才能完成(延迟重新连接尝试)。

在这样的测试中,我的本地开发机器的负载几乎为 0%,因此它与内存或处理器无关。

我已经在第二台本地机器上尝试了相同的机器人脚本,以确保问题与在与服务器相同的机器上运行的机器人无关。但我遇到了同样的问题。

一旦我将机器人脚本指向真实服务器,我就没有任何问题。

当我处于问题发生的范围内时,即与超过 120 个客户端一起推送时,我尝试使用浏览器访问我的本地开发服务器(真实用户场景)并刷新多次。有时我得到一个“内部服务器 500”。

让我觉得这可能不是 socket.io 而是由 nginx 相关的?或常规 os x(非服务器)机器上的其他一些基本套接字限制?

最佳答案

我在发布这个问题之前所做的所有谷歌搜索...... 这样做 3 分钟后,我偶然发现了答案:

在终端中写入:

sysctl -a | grep somax

我得到了答案:

kern.ipc.somaxconn: 128

所以我想这个案子已经结束了。

只需在终端中写入:

sudo sysctl -w kern.ipc.somaxconn=xyz

其中 xyz 是允许的连接数。

在这里找到答案: http://b.oldhu.com/2012/07/19/increase-tcp-max-connections-on-mac-os-x/

关于os x 上的 node.js socket.io 服务器无法连接超过 120 个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29795469/

相关文章:

php - nginx docker实例多个应用程序

php - Nginx Wordpress 无法访问博客文章但可以访问主页

php - Nginx - 将 PHP 视为二进制文件

javascript - 如何将 Socket.io 与 MEAN 堆栈一起使用?

node.js - 如何获取 socket.io 0.7 客户端文件

angularjs - 如何使用 angular-socket-io 库设置 socket.io 服务器?

javascript - 使用 JavaScript 动态更新视频 src

javascript - express.js 中的这行代码是什么意思?

node.js - 检查用户是否已存在并等待回调

javascript - Electron 应用程序在运行 Javascript 代码时停止渲染