node.js - nodejs/Mac 和打开文件限制

标签 node.js

我编写了一个程序,可以递归地读取一个目录中的文件,修改它们并将它们写入另一个目录中。每次我运行该程序时,它都会在几百次迭代后崩溃。我刚刚再次运行它,似乎完成了任务。

无论是nodejs还是Mac OS X,或者最有可能的是nodejs-on-Mac-OS-X,似乎对一次可以打开的文件数量有某种限制。四处搜索,我发现解决方案是使用类似 ulimit -n 10480 的东西,一切都会好起来的。这是正确的方法吗?本能地,我宁愿不修改我的系统设置,而是修改我的程序以使其在限制内工作。

观察:早些时候,我曾经使用 Perl 来完成上面描述的任务,而且从来没有遇到过问题。我假设这是因为我正在打开、转换、然后关闭文件,然后继续前进。在nodejs中,使用async模式,我无法在继续下一个文件之前关闭文件。如果我在sync模式下执行任务,它就可以正常工作。

最佳答案

您可以将异步库与限制命令结合使用,将处理的文件数量限制为一定数量。例如:

async.eachLimit(files, 1000, function (file, next) {
    processFile(file, next);
}, done);

如果您希望在处理下一个文件之前处理单个文件,只需使用eachSeries。

async.eachSeries(files, function (file, next) {
    processFile(file, next);
}, done);

关于node.js - nodejs/Mac 和打开文件限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45910711/

相关文章:

javascript - ( Node :125008) MaxListenersExceededWarning: Possible EventEmitter memory leak detected

javascript - Nodeweb 套件崩溃 - Events.js :85 Error

node.js - 诺克:请求不匹配

node.js - Electron 构建器未将我的 dist/node_modules 目录复制到正确的位置

node.js - 创建使用 Mongoose 更新和保存文档的方法?

php - 实时聊天、消息处理 - Socket.io、PHP、MySQL、Apache

node.js - 发送短暂响应不和谐按钮

javascript - 如何在 Node.js REPL 上使用 `prompt`

javascript - 将数组添加到javascript中的对象数组

node.js - Jasmine Node 不适用于 Windows