Node.js + Socket.IO websockets负载很重

几年来,使用Node.js + Socket.IO开发了一个实时应用程序,并且有相当多的实时消息(每天发送〜200K信息)。 看起来我们已经达到了一个新的负载阈值,由于某些原因,某些用户在Chrome浏览器中的websockets连接正在回退到间隔轮询(jsonp,xhr),即使浏览器支持websocket。 接下来需要在节点事件循环中分析延迟,但目前正在使用netstat cmds大约有2600个并发socket.io连接。

任何想法为什么websockets连接回落到间隔轮询? 我们也看到一些socket.io超时,连接被拒绝,在高峰负载时间。 但服务器上的CPU是合理的(节点进程峰值为25%,总体为45%,并且服务器上有足够的内存空间)。

我目前的理论是在节点事件循环中有一些延迟,即备份套接字连接。 为了减less负载,我正在考虑增加更多的广播发射间,以进一步减less发送/接收的消息总数。

任何其他的想法,赞赏!