是否有明确的方法来识别“冷启动”?在Lambda本身的运行时,还是通过日志?我知道冷启动的特点是运行时间更长,我实际上可以看到,但我正在寻找一种明确的切割方式。 如果重要的话,我正在使用Node.js。
更新:以下有两个好的答案,针对两个用例: - 确定lambda运行时的冷启动。 - 从CloudWatch日志中识别冷启动。
答案 0 :(得分:11)
如果您在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(...);
}
答案 1 :(得分:8)
如果您正在查看CloudWatch日志,Lambda函数的每个LogGroup都代表一个单独的容器,因此该LogGroup的第一次调用就是您的冷启动。
答案 2 :(得分:0)
作为更新,AWS现在在Cloudwatch日志的“报告”部分内以“初始化持续时间”的形式提供有关冷启动的可见信息。没有冷启动的呼叫将不会在日志中包含此信息
持续时间:1866.19 ms计费持续时间:1900 ms内存大小:512 MB使用的最大内存:163 MB初始化持续时间:2172.14 ms