gpt4 book ai didi

Node.js 生成 EMFILE

转载 作者:搜寻专家 更新时间:2023-10-31 22:40:00 25 4
gpt4 key购买 nike

我正在尝试在我的 Node 作业中使用 ChildProcess.exec 在 async.forEach 循环中运行命令。这是代码

async.forEach( docPaths, function(docPath, callback) { 
var run = [];
// some command using docPath variable here..
run.push(command);
debugger;
exec(run.join(' '), function(error, stdout, stderr){
callback();
});
}, callback);

这里是错误

"stack":"Error: spawn EMFILE\
at errnoException (child_process.js:478:11)\
at ChildProcess.spawn (child_process.js:445:11)\
at child_process.js:343:9\
at Object.execFile (child_process.js:253:15)\
at child_process.js:220:18\

快速谷歌显示我需要设置 ulimit 值来增加可以打开的文件描述符的数量。像“ulimit -n 10000”这样的东西..(来自下面的链接)

https://groups.google.com/forum/#!topic/nodejs/jeec5pAqhps

我在哪里可以增加这个..?或者是否有任何其他解决方案来规避此问题?

感谢您的帮助..非常感谢!!

最佳答案

首先,不建议乱用 ulimit,因为它可能会产生系统范围的影响。

相反,由于您已经在使用异步,因此它带有一个 limit paramater您可以使用它来限制并行执行的数量。

async.eachLimit( docPaths, 100, function(docPath, callback) { 
var run = [];
// some command using docPath variable here..
run.push(command);
debugger;
exec(run.join(' '), function(error, stdout, stderr){
callback();
});
}, callback);

请反复试验并将 100 替换为合适的值。

关于Node.js 生成 EMFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com