簡體   English   中英

NodeJ:正在運行的spawn進程內存使用量正在增長

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM