javascript – NodeJS&Socket.IO

前端之家收集整理的这篇文章主要介绍了javascript – NodeJS&Socket.IO前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用NodeJS和Socket.io时遇到一个奇怪的问题.

通过ZeroMQ接收数据的服务器.那工作完美.
对于ZeroMQ的每个消息,我使用sockets.volatile.emit将其发送到所有连接的客户端.
这个问题只出现在大量连接帐户(超过100个)上,似乎发送到客户端有一个队列(客户端延迟接收消息不断增加)

注意:每个连接的客户端从ZeroMQ接收到每个消息,因此基本上为了更多的客户端,通过socket.IO发送更多的数据.

通过Logs / Debug我知道从ZeroMQ的接收没有任何延迟,所有的工作在那一部分.排放似乎有一个队列或延迟不断增加.

每个客户端的消息速率为80个消息/秒.

注意:NodeJS 0.10.20和Socket.IO 0.9.16.

如何控制,以防止客户端收到旧邮件

解决方法

检查这个 article它会告诉你很多基本的错误,它是关于阻止事件循环,这似乎很像你在做什么.

也许使用如:DebugBlocked这样的工具,我认为这将有助于解决你的问题.两者都可以调试您在性能方面创建瓶颈其他基本问题.

或者将您的节点项目挂起在PM2上,并将其绑定到Keymetrics.IO,这将为您提供一个对您的服务器的良好视图,以及为什么它运行缓慢,以及为什么会出现性能瓶颈.

它难以解决您的问题没有代码示例,但这里有3个原因为什么你的应用程序或你可能会造成瓶颈(也许在不知不觉中):

>使用JSON.parse函数解析一个大的json有效负载.
>尝试在后端的一个大文件上执行语法高亮(类似于Ace或highlight.js).
>一次解析大量输出(例如从子进程输出git log命令).

更多信息在第07节第2节中称为“阻止事件循环”

一个与你有关的问题,this one.

想知道更多关于事件循环,我可以热烈地指导你踏上“How the single threaded non blocking IO model works in Node.js

以下是Node.js Processing模型的模型,以查看事件循环及其周围环境发生的情况

猜你在找的JavaScript相关文章