Nodejs和Socket.io可以支持多少用户?

3s2*_*2ng 22 node.js socket.io

我有一个实现broadcast.emit的网站.将消息发送给站点的所有用户.它只是socket.io最简单的实现,但我目前遇到了问题.当我达到约100个并发用户时.nodejs服务器开始滞后,直到它挂起,我无法再访问我的整个网站.当我们检查服务器时.nodejs占用了100%的CPU.这是正常的吗?

我想知道socket.io支持多少用户?当这件事发生时,有没有办法以编程方式重启nodejs服务器?

Mil*_*kov 20

我有一个多人纸牌游戏.Socket.io在大约3000个并发用户的情况下最大化了我的CPU.这是在Intel i7 CPU上.因此,我必须运行多个node/socket.io进程来处理负载.

对于100个并发连接,你应该没问题.也许您正在使用某些VPS并且CPU与所有其他VM共享?你运行专用服务器吗?

另外,检查您的代码.您可能正在同步执行一些应该异步的东西.

  • 目前,我使用HAProxy作为前端运行7个节点进程.大约有9000个并发用户(每个节点大约1300个),一切都没有问题.全部在一台服务器上. (9认同)
  • 我正在分析数据并将所有信息存储在纯JavaScript对象中.我使用HAProxy来确保同一个播放器始终连接到同一台服务器.请注意,这是一个纸牌游戏(基于回合制),因此每个玩家每分钟发送大约20-30条消息. (2认同)

And*_*rov 17

至少250k并发连接(对于大多数用例,瓶颈是内存)

  • 上面引用的250k是没有socket.io的HelloWorld类型的基准测试.实际上c10k接近实际(取决于您的CPU和应用程序复杂性).例如,对于我正在运行的纸牌游戏,我在大约c3k时达到了100%的CPU使用率. (11认同)
  • 伙计们只是为了更新.我们转移到Amazon EC2实例,现在可以处理我们当前的用户.我们目前的最大并发用户数是500,所以还不那么重. (2认同)