【问题标题】:What is my Lambda doing between startup and first line?我的 Lambda 在启动和一线之间做了什么?
【发布时间】:2018-12-21 03:07:01
【问题描述】:

我有一些用 C# 编写的 Lambda 函数,在 AWS 的 .NET Core 2.1 运行时中运行。它们的冷启动时间非常长(>8s 和 256MB,>4s 和 512)。

但是,我不确定这只是冷启动时间还是其他什么;我还有其他用 dotnet 编写的 lambda,它们的启动时间似乎更短。

X 射线跟踪显示“初始化”完成与发生任何事情之间存在很大差距。我在处理程序的第一行开始了一个 X-Ray 子段(在跟踪中显示为“配置”)。

我有什么遗漏吗?

【问题讨论】:

  • 我应该补充一点,一旦温暖,整个持续时间基本上都花在了 S3 请求上,所以它似乎只发生在第一个请求上。包只有 3MB 左右。
  • 如果时间是线性的或接近线性的,与您为容器指定的内存相比,那么——不管它是什么——它是受 CPU 限制的。
  • 是的,同意,它绝对受 CPU 限制。只是不确定是我的代码,还是 AWS 环境在做某事。

标签: .net-core aws-lambda aws-sdk aws-xray


【解决方案1】:

“?”您提供的图像中是 Lambda 系统代码。

“初始化”部分包括为您的函数运行构造函数和静态块。但它还包括对您的程序集的一些反思,以验证和查找您的函数类和构造函数。如果您正在使用序列化程序,它还会查找并验证您的序列化程序。

对于为什么这个函数的行为与其他函数不同,我无法给出明确的答案。您能否展示一些您正在比较的函数的图表以及函数的描述(内存、函数正在做什么、zip 包中的依赖项)?

【讨论】:

  • 啊,好吧,我不知道反射部分 - 但我想这是有道理的。是否有任何文档、博客文章或其他内容来解释冷启动期间发生的情况?当我查看时,从未设法找到太多细节。我将获取其他函数的一些痕迹并将其添加到问题中以进行比较。
  • 如果您能提供反射位的来源,很高兴奖励这个答案?
  • docs.aws.amazon.com/lambda/latest/dg/running-lambda-code.html 这可能有用,但没有提到反射位
猜你喜欢
  • 1970-01-01
  • 2013-11-08
  • 2019-09-01
  • 1970-01-01
  • 2017-02-01
  • 2015-12-12
  • 2014-10-01
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多