【发布时间】:2014-07-12 03:01:11
【问题描述】:
我使用以下代码在 nodejs 服务器的 CLI 环境中运行 PHP 脚本。 该脚本将 stdin 中的数据执行计算并将其他数据返回到 stdout。
问题在于使用 child_process.spawn 运行脚本并通过管道连接到增加内存使用量。所以我必须每隔一段时间重新启动节点应用程序。
我想保持 RAM 的使用不变。
在示例中,我使用 cat 命令来模拟我的 php 脚本,但问题仍然存在,内存使用增加与 setInterval 中的周期数成正比。 我使用 setInterval 来模拟脚本的周期执行。
var spawn = require('child_process').spawn;
var php = spawn('cat');
var i = 0;
setInterval(function() {
php.stdin.write(++i);
},10);
案例#2 即使有以下情况,我也看到了内存泄漏:
var spawn = require('child_process').spawn;
var php = spawn('cat');
php.stdout.resume();
php.stderr.resume();
var i = 0;
setInterval(function() {
gc && gc();
console.log(process.memoryUsage());
console.log(php.stdin.write(''+(++i)));
},1000);
执行:node --expose-gc --always-compact foo.js
已针对 v0.10.28 节点测试
【问题讨论】:
标签: node.js memory process pipe spawn