AWS Lambda - 解决 100% CPU 问题

Lio*_*erg 1 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 + "%   ");
});
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:

  1. 我怎样才能找到每个调用的CPU使用率
  2. 据我所知,lambda 正在一个文档容器上运行(?),并且许多事件可以发送到同一个容器。我可以限制事件数量吗?
  3. 当在 docker 上运行时,我给任务分配了 2048 个 CPU 单位,但从未获得 100% 的使用率。我怎样才能给 lambda 相同的值
  4. 我还可以检查其他事情吗?

Dun*_*dan 5

关于您的问题:

  1. 要查找在 AWS Lambda 中运行速度较慢的代码部分,添加一些日志记录甚至更好的AWS X-Ray自定义段集成将会有所帮助。
  2. AWS Lambda 在容器中运行,但这些不是 Docker 容器。每个容器仅并行处理一个事件,但通常顺序处理多个事件。因此,如果您只有几个事件,您的 AWS Lambda 函数可能只会在一个容器中运行,而当您有大量并行事件时,它将在多个容器中运行(请参阅了解扩展行为)更多详细信息,
  3. AWS Lambda 中的可用 CPU 资源直接与您提供给 AWS Lambda 函数的内存量相关(请参阅配置 Lambda 函数有关更多详细信息,因此,增加 Lambda 函数可用的内存量,也会增加可用的 CPU 资源。
  4. 我建议您使用 1. 中的建议来找出 Lambda 函数中花费时间较长的内容,如果仍然不需要花费很长时间,请针对它提出一个单独的问题。