AWS Lambda:识别冷启动



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

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

如果在 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 日志中为冷启动记录一个额外的"初始化持续时间"值。

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

持续时间: 1866.19 ms 计费时间: 1900 ms 内存大小: 512 MB 已用最大内存: 163 MB 初始化持续时间: 2172.14 ms

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

最新更新