Node.js 有多少用户Nodejs&;Socket.io可以支持什么?

Node.js 有多少用户Nodejs&;Socket.io可以支持什么?,node.js,socket.io,Node.js,Socket.io,我有一个实现broadcast.emit的网站。向站点的所有用户发送消息。这只是socket.io的最简单实现,但我目前遇到了一个问题。当我碰到大约100个并发用户时。nodejs服务器开始延迟,直到它挂起,我无法再访问我的整个网站。当我们检查服务器时。nodejs占用了100%的CPU。这正常吗 我想知道socket.io支持多少用户?当这种情况发生时,有没有办法以编程方式重新启动nodejs服务器 并发连接(对于大多数用例来说,瓶颈是内存)将消息传递给所有客户端而不丢弃它对您来说是否至关重要

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


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

并发连接(对于大多数用例来说,瓶颈是内存)

将消息传递给所有客户端而不丢弃它对您来说是否至关重要?如果没有,我建议使用socket.volatile.emit调用。远程客户端和不稳定的连接可能会有很多问题。

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

对于100个并发连接,您应该可以。也许您正在使用一些虚拟机,CPU与所有其他虚拟机共享?您是否运行专用服务器


此外,请检查您的代码。您可能正在同步执行一些应该异步的操作。

谢谢Andrey。实际上,服务器内存中没有问题。它使用的服务器内存不足5%。另外,我忘了提到nodejs与我的web在同一个框中&上面提到的db server250k是一个没有socket.io的HelloWorld类型的基准测试。实际上,c10k接近真实(取决于您的CPU和应用程序复杂性)。例如,对于我正在运行的一个纸牌游戏,我在c3k.1m并发连接时达到了100%的CPU使用率——“1m并发连接”也没有socket.io。Node.js的伸缩性很好,但我不太确定socket.io.Guys是否只是为了更新。我们转向AmazonEC2实例,现在可以处理当前用户。我们目前的最大并发用户数是500,所以还没有那么多。传递给客户端的消息很重要。因为所有用户的数据都应该一直同步更新。如果我要使用volatile,这是否意味着如果用户失去连接,他们将不会收到消息?他们是否有可能随后收到最新消息?使用volatile还有其他缺点吗?当正在发送的当前消息数据替换客户端上以前的数据时(即,使通过同一调用发送的以前的消息过时),我会使用
socket.volatile.emit
。您能给我们一些关于服务器规格的信息吗?如果您要使用群集模块并使用更多内核,这个数字会增加吗?或者您已经在使用群集模块了?目前,我使用HAProxy作为前端运行7个节点进程。大约有9000个并发用户(每个节点约1300个),而且一切正常。都在一台服务器上。感谢您的真实响应。@Milanbauškov感谢您的真实示例,只是好奇,既然您有7个节点进程在运行,您是如何处理内存中的数据库的?带redis的酒吧/酒吧?我准备用websockets启动一个action RPG,我在想是应该重写所有内容以支持redis,还是可以使用1台服务器。另外,每个用户每分钟发送多少条消息?我正在对数据进行切分,并将所有信息存储在普通JavaScript对象中。我使用HAProxy确保同一玩家始终连接到同一服务器。请注意,这是一种纸牌游戏(回合制),因此每位玩家每分钟发送20-30条信息。