我有一个实现了广播.emit功能的网站,可以将消息发送给该站点的所有用户。这只是socket.io最简单的实现方式,但目前出现了问题。当并发用户数达到约100个时,Node.js服务器开始变慢,直到挂起,导致无法访问整个网站。在检查服务器时,发现Node.js正在占用100%的CPU。这正常吗?
我想知道socket.io支持多少个用户?当发生这种情况时,有没有一种方法可以通过编程方式重新启动Node.js服务器?
我有一个多人卡牌游戏,Socket.io在大约3000个并发用户时会将我的CPU占满。这是在Intel i7 CPU上的情况。因此,我必须运行多个node/socket.io进程来处理负载。
对于100个并发连接,你应该没问题。也许你正在使用一些VPS,而CPU是与所有其他虚拟机共享的?你是否运行了专用服务器?
此外,请检查你的代码。你可能正在同步地执行一些本应该异步进行的操作。
至少250,000个并发连接(对于大多数用例,瓶颈在于内存)
如果对您来说向所有客户端传递消息而不丢失它至关重要,我建议使用socket.volatile.emit调用。远程客户端和不稳定的连接可能会导致许多问题。
socket.volatile.emit
。 - Gautham Badhrinathan