Raspberry Pi 3脚本RAM使用

时间:2016-10-24 09:13:54

标签: node.js websocket ram raspberry-pi3 modbus

我正在使用raspberry pi 3从设备中提取串行数据(USB),然后我将带有websockets的数据发送到客户端。所有都在NodeJS上运行。

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

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

1 个答案:

答案 0 :(得分:2)

在ram约束环境中对节点做的第一件事(节点可用的小于1.5gb)就是告诉节点本身,因为它似乎无法自己知道。

如果您不认为GC至少有1.4Gb可用,并且节点GC lazy 意味着,它将等待该限制以释放大量内存。因此,使用1Gb ram在Rasberry Pi 3上做的第一件事就是尽快强制GC,比如500Mb ram。

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

它会强制GC更快地执行(旧的空间大小不是节点的唯一内存空间,但它是最大的,因此GC应该围绕节点进程500/600 Mb)

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

如果您在此之后仍然遇到麻烦,那么您确实有泄漏(Garbage无法检索的内存)。