微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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模型的模型,以查看事件循环及其周围环境发生的情况

原文地址:https://www.jb51.cc/js/154451.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐