node.js - Raspberry Pi 3 脚本 RAM 使用情况

标签 node.js websocket ram raspberry-pi3 modbus

我使用树莓派 3 从设备中提取串行数据 (USB),然后使用 Websocket 将此数据发送到客户端。全部运行在 NodeJS 上。

为了从设备中提取数据,我们使用 modbus-rtu,但我们遇到了 ram 问题。该脚本会在 1-2 小时后停止工作。我们发现 .readHoldingRegisters() 会在一段时间后增加我们的 RAM 使用量。

有关解决方案的任何提示吗?

最佳答案

在内存限制环境( Node 可用空间小于 1.5GB)中, Node 要做的第一件事就是告诉 Node 本身,因为它自己似乎无法知道。

如果你不假设 GC 至少有 1.4Gb 可用,并且 Node GC 是惰性意思,它将等待该限制来释放大量内存。因此,在具有 1Gb 内存的 Rasberry Pi 3 上要做的第一件事就是尽快强制执行 GC,例如 500Mb 内存。

node script.js --max-old-space-size=500 

这将迫使GC更快地采取行动(旧空间大小不是 Node 唯一的内存空间,但它是最大的,因此GC应该围绕500/600 Mb的 Node 进程采取行动)

GC 是同步操作(因此是惰性模式),它会影响性能,因此您可能需要微调限制。

如果在此之后您仍然遇到问题,则确实存在泄漏(垃圾无法检索的内存)。

关于node.js - Raspberry Pi 3 脚本 RAM 使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40214669/

相关文章:

intel - AVX2 中的收集指令是如何实现的?

node.js - 具有 session 或 JWT 的 Node 用于大型用户群应用程序?

javascript - JSON响应上的重复 block

javascript - 将 node-v0.10.4 用于 websocket 代理时出现错误 'invalid data'

amazon-web-services - 无法将客户端连接到 AWS 上的远程套接字

ios - WebSocket 消息是否缓存在 iOS 上?

javascript - 上传文件并使用 multer 传递附加参数

javascript - 通过nodejs过滤对象数组

Python RAM写入和读取

java - LibGdx RAM 使用量持续增加