自学内容网 自学内容网

【NodeRed】MCProtocol 组件中MaxListenersExceededWarning 告警

【NodeRed】MCProtocol 组件的MaxListenersExceededWarning 告警

问题

在NodeRed 中采用MCProtocol ,以MC协议进行PLC的信息读写,但在同一个NodeRed 端口下,多窗口设置多个MCProtocol 系列组件,会进行告警:

(node:30132) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [MCProtocol]. Use emitter.setMaxListeners() to increase limit
(Use node --trace-warnings ... to show where the warning was created)在这里插入图片描述

刚开始告警时,由于不影响使用就没有管。但是运行较长时间后,出现了信息读写出错的问题,重新启动后又恢复正常。针对这个情况,对告警进行解决。

解析

首先,对告警进行翻译,大致意思就是MC事件监听器使用超了,那问题就定位到了MC模块。然后,运行node --trace-warnings red2.js进行调试,查找报错位置:

(node:32480) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [MCProtocol]. Use emitter.setMaxListeners() to increase limit
at _addListener (node:events:592:17)
at MCProtocol.addListener (node:events:610:10)
at Object.on (C:\Users\11003189.node-red\node_modules\node-red-contrib-mcprotocol\connection_pool.js:88:17)
at new mcRead (C:\Users\11003189.node-red\node_modules\node-red-contrib-mcprotocol\nodes\read.js:60:23)
at Object.createNode (C:\Users\11003189\AppData\Roaming\npm\node_modules\node-red\node_modules@node-red\runtime\lib\flows\util.js:182:27)
at Flow.start (C:\Users\11003189\AppData\Roaming\npm\node_modules\node-red\node_modules@node-red\runtime\lib\flows\Flow.js:261:54)
at Object.start [as startFlows] (C:\Users\11003189\AppData\Roaming\npm\node_modules\node-red\node_modules@node-red\runtime\lib\flows\index.js:403:17)
在这里插入图片描述
里面connection_pool.js:88:17 中88是行数,17是该行列数。

问题出在_addListener,直接查Listener找监听器数量设置,定位到了文件mcprotocol.js文件。整个文件看下来发现没有设置,用的默认参数。看了网上一些资料,一般监听器数量默认是10个。虽然nodeRed开了多窗口,但是NodeJS是单线程的,所以使用数量肯定是超了的,这边有个点很奇怪,它日志输出有11个错误,但是实际MC组件超了11个,很奇怪这个数量是怎么确定的,难道是MC的默认监听数量?

解决方案

C:\Users\11003189\.node-red\node_modules\node-red-contrib-mcprotocol\mcprotocol 中增加监听器数量设置,EventEmitter.defaultMaxListeners = 0; 设置为0表示不进行数量限制。
在这里插入图片描述
在变更后,重新启动文件,MaxListenersExceededWarning 告警就没有了。


原文地址:https://blog.csdn.net/weixin_48618536/article/details/142365033

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!