使用Node.js + Socket.IO开发了一个实时应用程序已有几年了,并且有相当多的实时消息传递(每天发送~200K消息)。看来我们已达到一个新的负载阈值,由于某种原因,某些用户的Chrome中的websockets连接正在回退到间隔轮询(jsonp,xhr),即使浏览器支持websockets。需要在接下来的节点事件循环中描述延迟,但目前使用netstat cmds达到大约2,600个并发socket.io连接。
任何想法为什么websockets连接回退到间隔轮询?在高峰加载时,我们也看到一些socket.io超时,连接被拒绝。但是服务器上的CPU是合理的(节点进程峰值为25%,整体为45%,服务器上也有足够的内存空间。
我目前的理论是节点事件循环中存在一些延迟,即备份套接字连接。为了减少负载,我正在考虑增加更多的广播发射室,以进一步减少发送/接收的总消息。
感谢任何其他想法!