I
@Viktor, добрый день.
Действительно, проблема памяти при многократных частых запусках child process существует.
github.com/nodejs: Issue 25382. Child process tries to reserve as much mem as parent
То есть это даже не проблема движка node, а уровень системной ф-и библиотеки libuv.
Вкратце - дочерний процесс пытается при запуске зарезервировать столько же памяти, сколько выделено основному процессу в текущий момент. Если основной процесс выполнял затратные операции, и сборка мусора еще не выполнена (!! сборщик мусора стандартно запускается довольно редко, по умолчанию это десятки минут), то получаем ENOMEM
То же самое происходит, если плагин не может запуститься в нормальном режиме, бесконечно перезапускается, и в конце концов нарывается на ту же ошибку. Поэтому мы советуем неработающие плагины переводить в состояние stop.
В случае с часто запускаемыми сниппетами лучше обойтись без child_process
Температуру CPU можно читать напрямую из файла:
/**
* CPU Temp
*/
module.exports = callback => {
const data = require("fs").readFile('/sys/class/thermal/thermal_zone0/temp', (err, data) => {
if (err) return callback(err);
callback(null, parseInt(data)/1000);
});
}