许多同时连接

我正在聊天应用程序。 底层服务器使用Node.js,客户端/服务器通信通过WebSocket进行。

所以问题是:有多less同时连接可以这样的服务器处理(没有明显的滞后)? 当然大概假设服务器是非常强大的机器。 我知道这不是一个简单的问题来回答,但我只是想想点,一些近似…或至less上下限。 当然我会去做一些实际的testing,但这个理论可能会帮助我一点。

另外我还有一个问题涉及到第一个问题:是否可以将Node.js应用程序拆分为多个机器? 请记住,大部分数据都保存在机器内存中,而不是数据库中。

等待答复。 🙂

您需要确保在epoll / kqueue之上运行node.js,并调整您的操作系统以获得较高的TCP连接数。

以下是基于Autobahn WebSockets的发布/订阅系统的一些测量数字:

  • 180k并发,活动的WebSocket连接
  • 12k / s发送pubsub消息
  • 4k / s的WebSocket开启握手
  • 每个WebSocket连接<8kB

这是在configuration有2个内核和2GB RAM的FreeBSD i386虚拟机上。

Autobahn WebSockets是基于Python / Twisted的,在kqueue reactor上运行。

我已经做了一个多房间聊天应用程序的简单基准 。 只要记住在运行时监视CPU%,基准程序可能会比服务器更快地耗尽CPU。