22

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

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

4

3 回答 3

20

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

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

另外,请检查您的代码。您可能正在同步做一些应该异步的事情。

于 2012-09-12T12:26:33.927 回答
17

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

于 2012-04-15T15:12:02.387 回答
3

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

于 2012-04-15T19:50:29.110 回答