AWS Lambda-解决100%CPU问题

时间:2018-07-08 11:07:33

标签: aws-lambda

几天前,我开始与Lambda合作。 每个lambda调用都是我所执行的CRON作业的执行。 我注意到非常简单的任务超时(5分钟),该超时不会占用大量内存/ CPU,并且在本地运行它们时,的确少于20秒。

然后,我已将此代码添加到lambda的主文件中:

const libCpuUsage = require('cpu-usage');

libCpuUsage(1000, function (load) {
    if (load > 60)
        console.log("\rCPU LOAD: " + load + "%   ");
});

(有时)我在日志中看到“ CPU LOAD:100%”

我的问题是:

  1. 如何查找每个呼叫的CPU使用率
  2. 我了解到lambda在摘要式容器(?)上运行,并且许多事件可以发送到同一容器。我可以限制事件的数量吗?
  3. 在docker上运行时,我给任务分配了2048个CPU单位,但从未获得100%的使用率。我怎样才能给lambda一样
  4. 还有其他我可以检查的东西吗?

2 个答案:

答案 0 :(得分:4)

关于您的问题:

  1. 要查找在AWS Lambda中运行时很慢的代码部分,可以添加一些logging甚至更好的AWS X-Raycustom segments的集成。
  2. AWS Lambda在容器中运行,但是这些不是docker容器。每个容器仅并行处理一个事件,但通常顺序处理多个事件。因此,如果您只有几个事件,则当您有许多并行事件时,您的AWS Lambda函数可能仅在一个容器中运行,而在多个容器中运行时,它将在多个容器中运行(有关更多详细信息,请参见Understanding Scaling Behavior)。 / li>
  3. AWS Lambda中可用的CPU资源直接与您提供给AWS Lambda函数的内存量相关(有关更多详细信息,请参见Configuring Lambda Functions)。因此,增加Lambda函数可用的内存量,也会增加可用的CPU资源。
  4. 我建议您使用1.中的建议来确定Lambda函数中需要花费很长时间的内容,如果它仍然不需要花费很长时间,请为此提出一个单独的问题。

答案 1 :(得分:0)

好吧,显然,问题出在io问题,而不是CPU问题。 Lambda函数的VPC设置错误。

此外,我不确定'cpu-usage'节点模块是否可以与lambda容器一起使用