12

是否有明确的方法来识别“冷启动”?是在 Lambda 本身的运行时,还是通过日志?我知道冷启动的特点是运行时间更长,我实际上可以看到,但我正在寻找一种明确的方式。如果这很重要,我正在使用 Node.js。

更新:对于两个用例,下面有两个很好的答案: - 在 lambda 运行时识别冷启动。- 从 CloudWatch 日志中识别冷启动。

4

3 回答 3

22

如果您在 NodeJS 脚本的顶部添加一些初始化代码,您将能够在代码中告诉它是冷启动,然后如果您想在日志中看到它,您将能够记录它。例如:

var coldStart = true;
console.log("This line of code exists outside the handler, and only executes on a cold start");


exports.myHandler = function(event, context, callback) {
  if (coldStart) {
    console.log("First time the handler was called since this function was deployed in this container");
  }
  coldStart = false;

   ...
   
  callback(...);
}

更新:

如果您只关心在日志中查看冷启动,Lambda 现在会在 CloudWatch Logs 中为冷启动记录一个额外的“Init Duration”值。

于 2017-11-01T18:45:39.737 回答
13

作为更新,AWS 现在在 Cloudwatch 日志的报告部分中以“初始化持续时间”的形式提供有关冷启动的可见信息。未遭受冷启动的调用不会在日志中包含此信息

持续时间:1866.19 毫秒计费持续时间:1900 毫秒内存大小:512 MB 使用的最大内存:163 MB 初始化持续时间:2172.14 毫秒

于 2019-12-10T07:03:23.007 回答
10

如果您正在查看 CloudWatch 日志,您的 Lambda 函数的每个 LogGroup 都代表一个单独的容器,因此该 LogGroup 的第一次调用是您的冷启动。

于 2017-11-02T06:15:05.117 回答