是否有明确的方法来识别“冷启动”?或者是在Lambda本身的运行时,还是通过日志?我知道冷启动的特点是运行时间更长,这我可以看到,但我正在寻找一个明确的方式。如果这件事重要的话,我正在使用Node.js。
更新:下面有两个很好的答案,用于两个用例:-在lambda运行时识别冷启动。-从CloudWatch日志中识别冷启动。
发布于 2017-11-01 18:45:39
如果您在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“Init工期”值。
发布于 2019-12-10 07:03:23
作为更新,AWS现在以"Init持续时间“的形式在Cloudwatch日志的Report部分中提供有关冷启动的可见信息。不受冷启动影响的调用将不包含在日志中。
持续时间: 1866.19 ms记帐持续时间: 1900 ms内存大小: 512 MB使用的最大内存:163MB Init持续时间: 2172.14 ms
发布于 2017-11-02 06:15:05
如果您正在查看CloudWatch日志,那么Lambda函数的每个LogGroup都代表一个单独的容器,因此该LogGroup的第一次调用就是冷启动。
https://stackoverflow.com/questions/47061146
复制相似问题