[英]NodeJs: running spawn process memory usage is growing
我使用以下代碼在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進行了測試
嘗試增加間隔。 php.stdin.write()
很有可能在某個時候返回false,這表明正在緩沖,因為子進程無法跟上。 如果write()確實返回false,則通常應停止寫入,直到看到php.stdin
發出“ drain”事件php.stdin
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.