我能够使用 this guys sample code 将文件直接从 URI 流式传输到 S3,而无需使用 AWS Lambda (node.js) 将其下载到磁盘上。 。我对其进行了一些修改,以便我可以从请求对象主体创建一个缓冲区。 This is my code .
除了一件非常重要的事情之外,它确实很神奇!这些文件最大为 350 MB,但每次 lambda 函数运行时,最多需要 1.5 GB 内存,甚至更多!函数调用允许的最大内存为 1.536 GB。通常使用的大小在 0.8 GB 到 1.5 GB 之间(非常随机)。
我认为某处存在内存泄漏,但我不知道在哪里!
有什么想法吗?
最佳答案
var buffer = new Buffer(body);
似乎正在内存中复制整个响应正文...使您需要的内存量增加了一倍。
request似乎提供(或可配置为提供)body
作为 Buffer
,因此您应该能够直接使用 body
,而不是通过创建第二个缓冲区在内存中复制它。
关于node.js - 使用 lambda 将文件从 URI 直接流式传输到 S3,使用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34863493/