代码之家  ›  专栏  ›  技术社区  ›  Alex

nodejs https请求需要过多内存

  •  1
  • Alex  · 技术社区  · 5 年前

    我正在尝试加载此url的json https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.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 回复  |  直到 5 年前
        1
  •  1
  •   K Mo    5 年前

    内存的用途远远不止是保存json文件的副本。它运行您的实际程序,维护一个https链接和计算机所做的所有事情。

    下载实际上相当繁重。由于文件的大小,内存使用可能有点尖利。

    实际上,我已经成功地让你的代码工作了,但只有四分之一的时间,因为一旦内存使用率达到最大值,lambda就会被删除。

    这项工作似乎有点大,拉姆达可以处理(至少可靠地)。

    我删除了一个前面的答案,指向了在临时文件夹中可用的磁盘空间限制,在我自己的测试之后,我可以看到情况并非如此。