【问题标题】:AWS Lambda 'full' vs 'incremental' cold start?AWS Lambda“完整”与“增量”冷启动?
【发布时间】:2019-02-12 08:34:14
【问题描述】:

我正在研究冷启动问题,并认为以下两者之间存在差异:

  • “完全”冷启动,即从 0 个活动实例变为 1 个活动实例
  • “增量”冷启动,即从 n 到 n+1 个活动实例

不过,要准确测试“增量”场景相当困难。

谁能证实我的印象,并解释一下为什么会有差异?

【问题讨论】:

  • 您在哪里看到这两种情况有区别?
  • 这就是为什么我说这是一个“印象”。我发现很难准确地测试这一点。到目前为止,我只看到过一段时间不活动后的长时间延迟,而不是在有很多活动时 - 即使不时应该启动额外的实例。但我真正追求的是了解冷启动行为,所以如果你知道/相信我的印象一定是错误的,我会很高兴听到!
  • 您使用哪种语言?通常只有 Java 人员会受到 Lambda 容器启动时间的影响。
  • 语言是节点。冷启动的执行时间将是例如4s,与正常情况下的 1s 相比。不像 Java 那样高,但对于交互式场景来说太高了,并且在一个冷 lambda 可能调用另一个冷 lambda 的情况下会出现问题......

标签: amazon-web-services aws-lambda


【解决方案1】:

当内存中没有您的 Lambda 实例时,AWS 不知道需要一个实例,这就是第一次冷启动需要更长时间的原因。如果您的 Lambda 已经处于负载状态,AWS 可以预测将需要一个新实例。因此,它会预先准备一个新实例,然后将请求分发到该实例。因此,您的观察是正确的,冷启动仅对于活动为零的函数是一个问题。

【讨论】:

  • 这听起来是一个非常合理的解释,谢谢!只是好奇:你知道是这样还是你自己的推理/观察?
  • 经过大量负载测试后得出这个结论。但 AWS 未确认。
  • 不正确。尝试使用 Jmeter 喊出 10 个请求的脚本。在我的实验中,第一次和第二次请求持续时间的差异我增加了,然后稳定了。
【解决方案2】:

易于测试,编写 Jmeter 测试并以极少的延迟(50 毫秒)发送请求。在几个小时不活动后重复。可能最好让它运行一个周末在我的测试中,冷启动的持续时间增加然后稳定(尽管我使用 python 和一些重型 Web 框架和 zappa)。如果需要,添加日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 2021-11-06
    • 2022-10-04
    • 2019-11-21
    • 2020-07-02
    • 1970-01-01
    • 2019-08-07
    • 2020-05-18
    相关资源
    最近更新 更多