Node.js nodejs强大的多部分上传达到服务器RAM限制

Node.js nodejs强大的多部分上传达到服务器RAM限制,node.js,amazon-web-services,upload,multipart,formidable,Node.js,Amazon Web Services,Upload,Multipart,Formidable,我需要能够处理大文件多部分上传(总计20GB以上,每个文件2GB),并且我正在t3.large实例(8GB内存)上的Amazon弹性Beanstalk上运行node.js服务器 当上传类似于前面提到的大小的东西时,一旦开始处理请求(上传完成后),服务器就会崩溃,我很确定这是因为服务器的RAM和交换空间都用完了 据我所知,这不应该发生,我不认为所有文件的内容一次出现在内存中的原因,应该使用较小的缓冲区来处理数据传输/读取,因此我很难找到解决方案 下面是my node.js代码的一些相关部分: co

我需要能够处理大文件多部分上传(总计20GB以上,每个文件2GB),并且我正在t3.large实例(8GB内存)上的Amazon弹性Beanstalk上运行node.js服务器

当上传类似于前面提到的大小的东西时,一旦开始处理请求(上传完成后),服务器就会崩溃,我很确定这是因为服务器的RAM和交换空间都用完了

据我所知,这不应该发生,我不认为所有文件的内容一次出现在内存中的原因,应该使用较小的缓冲区来处理数据传输/读取,因此我很难找到解决方案

下面是my node.js代码的一些相关部分:

const formidable = require('formidable');
...
router.post('/pipeline', middleware.isAuth, runPipeline);
...
async function runPipeline(req, res, next) {
    console.log("invoked runPipeline");
    const { user, userModel } = await getRequestUser(req);
    const form = formidable({maxFileSize: 30 * 1000 * 1000 * 1000});
    form.parse(req, function (err, fields, files) {
        s3Service.runPipeline(req, fields, files, user, userModel, 30 * 1000)
            .then(
                body => {
                    res.status(body.code).json(body.data);
                }
            )
            .catch(err => next(err));
    });
}
s3Service.runPipeline迭代文件数组并将其上载到amazon s3,一次读取所有小于2GB的文件并在单个请求中上载,较大的文件以10MB的块上载。我不认为这个函数会导致任何问题,在我尝试将文件上传到s3之前,这些文件似乎已加载到内存中

谢谢你的帮助