NodeJS https请求需要过多的内存

时间:2019-01-02 07:59:44

标签: node.js amazon-web-services aws-lambda

我正在尝试加载此URL https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json的json。该文件有600MB以上的下载空间。

我正在lambda函数中使用以下代码:

lambda函数的设置超时时间为10分钟,内存为3008MB。但是该函数正在尝试使用更多功能。

let res = await doRequest2('https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json');

function doRequest2(url) {
  console.log("doRequest");
 return new Promise(function (resolve, reject) {
 const https = require("https");
 const url = "https://pricing.us-east-   1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json";
 https.get(url, res => {
 res.setEncoding("utf8");
 let body = "";
 res.on("data", data => {
  body += data;
  });
  res.on("end", () => {
   body = JSON.parse(body);
 resolve(body);
 console.log(body);
   });
    res.on("error", () => {
 console.log("Error");
 reject("error");
     });
 });

});
}

json下载如何需要这么多内存?

1 个答案:

答案 0 :(得分:1)

内存的用途远远不只是保存json文件的副本。它正在运行您的实际程序,维护一个https链接以及计算机执行的所有各种操作。

下载实际上繁重。由于文件大小,内存使用情况可能有点棘手。

我实际上已经设法使您的代码正常工作,但是只有四分之一,因为一旦内存使用量达到最大值,lambda就会被切断。

这项工作似乎对于lambda可以处理的工作(或至少是可靠的)有点大。

NB -我删除了一个指向temp文件夹中可用磁盘空间限制的先前答案,因为经过我自己的测试,我发现情况并非如此。