Zer*_*lve 6 javascript performance websocket node.js socket.io
我有一个带有巨大聊天室的聊天应用程序(15'000 个用户连接到一个房间)。只有少数人有写的权利,所以理论上应该不会有很大的负担。我注意到存在性能问题:当仅发送一条消息时,服务器 CPU 负载飙升至 30%-50%,并且消息传递缓慢(如果写入多条消息,可能会晚 1 秒或更糟)我分析了具有临床火焰的性能。我发现这段代码是问题所在:
socket.to("room1").emit(/* ... */);它将send()在engine.io 和 库clearBuffer中触发ws。
有人知道我是否做错了什么以及如何优化性能?
您可以对 sokets.io 服务器进行负载平衡。
我还没有这样做,但你有关于这样做的信息:https ://socket.io/docs/v4/using-multiple-nodes
如果您使用node.js作为http服务器: https: //socket.io/docs/v4/using-multiple-nodes#using-nodejs-cluster
或者,您可以考虑使用 redis。有一个包允许在进程或服务器集群上分配流量:
https://github.com/socketio/socket.io-redis-adapter
| 归档时间: |
|
| 查看次数: |
2184 次 |
| 最近记录: |