使用 Nodejs 12 的 aws-lambda 函数返回错误:“EMFILE,打开的文件太多”

Ark*_*dal 3 node.js aws-lambda

  getCodeFromS3(s3DownloadClient, sourceBucket.key)
    .then(unzipCode)
    .then((filelist) => {
      return Promise.all([filelist, putObjects(filelist, s3UploadClient)]);
    })
    .then(putJobSuccess)
    .catch((err) => {
      putJobFailure(err);
    });
Run Code Online (Sandbox Code Playgroud)

上面的 lambda 函数返回错误“EMFILE,打开的文件太多”。解压文件时出现错误。如何在 aws 控制台中修复它?

jar*_*mod 6

限制消耗过多文件句柄或套接字的请求的一种简单方法是使用瓶颈

例如:

const Bottleneck = require('bottleneck');

const limiter = new Bottleneck({
  // minTime: 33,
  maxConcurrent: 100,
});

const func = async (value) => {
  // do something, returns promise
};

const values = [...];

const wrapped_func = limiter.wrap(func);
const rc = await Promise.all(values.map(wrapped_func));
Run Code Online (Sandbox Code Playgroud)