我有一个实现broadcast.emit的网站。将消息发送给站点的所有用户。它只是socket.io最简单的实现,但我目前遇到了问题。当我达到约100个并发用户时。 nodejs服务器开始滞后,直到它挂起,我无法再访问我的整个网站。当我们检查服务器时。 nodejs占用了100%的CPU。这是正常的吗?
我想知道socket.io支持多少用户?当这件事发生时,有没有办法以编程方式重启nodejs服务器?
答案 0 :(得分:20)
我有一个多人纸牌游戏。 Socket.io在大约3000个并发用户的情况下最大化了我的CPU。这是在Intel i7 CPU上。因此,我必须运行多个node / socket.io进程来处理负载。
对于100个并发连接,你应该没问题。也许您正在使用某些VPS并且CPU与所有其他VM共享?你运行专用服务器吗?
另外,检查您的代码。您可能正在同步执行一些应该异步的内容。
答案 1 :(得分:17)
At least 250k并发连接(对于大多数用例,瓶颈是内存)
答案 2 :(得分:3)
向所有客户发送消息而不放弃消息对您来说至关重要吗?如果不是,我建议使用socket.volatile.emit调用。远程客户端和非稳定连接器可能存在很多问题。