如何优化套接字io性能?

问题描述

我已经设置了用于实时聊天(单人,团体)的服务器。客户端以一定的时间间隔将其数据发送到服务器。服务器还会以一定的间隔将数据发送给其他用户,再发送给客户端。

如果我在聊天中添加更多用户,则性能会变差。我现在如何改善性能

我可以使用更大的间隔来创建更稳定的性能吗?

或者您还有其他想法吗?

并且是否有调试工具来检查哪些服务器操作会使服务器减速?

socket.io是否支持很多用户聊天?

我正在使用socket.io 2.x

解决方法

在评论中进行后续讨论时,除了进一步调查该问题之外,没有足够的信息来提出其他建议。

  1. 即使向成千上万的用户发送5个字节的数据(确实是??)也不应阻塞网络。但是,这归结为实施细节。也许您用发送的每条消息重新建立套接字连接。也许您通过发送消息来阻止线程。或类似的事情发生

  2. 您提到一个数据库。你有看过吗?也许数据库是瓶颈。

您可以在how to implement time profiling for nodeJS上阅读这篇文章。除此之外,请尝试实施一个简单的脚本来隔离问题。例如

  1. 测量将简单消息发送给大量用户所需的时间。用户数量越多/信息越长,时间是否会显着增加?

  2. 测量在数据库中查找相关内容所花费的时间

在此处发布相关代码,并要求第二只眼睛检查问题。

,

使用Socket.io的二进制模式 Socket.io为WebSockets传输提供了端到端的“二进制模式”(并且是XHR Polling的一个不错的变体)。触发二进制模式所需要做的就是使用缓冲区。