我的 Node.Js 应用程序偶尔会因“分段错误”而失败,我不知道如何诊断原因。如下所述,我通过提高 maxlisteners 显着降低了它们的频率,但并没有解决问题。
该应用程序在 Node v0.8.22 下的 BeagleBone Black 上运行,并使用 Socket.io 将实时数据传送到 BBB 液晶显示器上显示的浏览器页面。它使用 korevec/node-i2c 库从通过 I2C 连接的传感器收集数据。但是,我已经隔离了该库,但仍然有故障。
当我将数据流式传输到客户端一段时间时,通常会发生故障,尽管它们偶尔/很少会在其他时间发生。这并不奇怪,因为我的应用程序使用 socket.io 在几乎所有页面上进行通信,但流式页面的容量要大得多。
我收到以下消息:
(节点)警告:检测到可能的 EventEmitter 内存泄漏。增加了 11 位听众。使用emitter.setMaxListeners() 增加限制。
痕迹
并且从第一天开始就一直这样做。我也看到了内存泄漏的症状,但是自从我提高了 MaxListeners 内存使用量就保持不变。进行此更改后的失败率急剧下降,但并未完全消失。我在 http 之上使用 socket.io 并为 socket.it 和 http 提高了 MaxListeners。
如何诊断这个问题?内存泄漏错误是否相关?我可以发布代码,但其中有很多,我不确定哪些部分最相关。
感谢您的帮助,干杯,威尔