Lambda使用Docker- 持续时间短,计费时间却很高

0

【以下的问题经过翻译处理】 我们正在使用Lambda在Docker(ECR)中运行,代码是使用Python编写的,具有许多依赖项(Docker大小为700MB)。我们注意到我们的代码执行时间非常短(约为650毫秒),但与之相比,计费时间非常高(4500毫秒),初始化时间为(约为3800毫秒)。因此,基本上每次执行的初始化时间占据了我们计费时间的80%。

我的以前的管道:每45分钟,我们同时启动200个具有不同参数的Lambda实例(我猜是200个冷启动?)

我的新管道:每45分钟,我启动相同的Lambda,不带参数(1次冷启动),然后这个Lambda再启动200次相同的Lambda,但带有参数(200次热启动?)

但是使用新管道后,问题仍然没有改善,我看不到任何改进:REPORT RequestId:f9d67348-2deb-410e-b874-b29e8b3569b2 Duration:653.58ms Billed Duration:4353ms Memory Size:300 MB Max Memory Used:284 MB Init Duration:3698.46ms

因此,以下是我的三个问题:

  • 3800毫秒是正常的冷启动时间吗?
  • 在我的新管道中,为什么初始化持续时间没有改进?
  • 您建议采取什么方法来降低/解决成本?
profile picture
EXPERTE
gefragt vor 5 Monaten50 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 问题)3800毫秒是正常的冷启动时间吗?答)冷启动受运行时和Lambda函数的依赖项影响。正常的冷启动时间实际上取决于Lambda函数正在执行的任务。Lambda函数在初始化持续时间内执行的任务越少,冷启动时间就越短。如果您想要查看Docker容器对冷启动的影响,您可以创建一个Lambda函数,仅打印"hello world",并收集性能基准数据。

问题)在我的新管道中,为什么初始化持续时间没有改进?答)目前不太清楚您的Lambda函数是否仍然经历冷启动。您可以使用CloudWatch Insights查询Lambda函数的日志,并生成有关冷启动的报告。以下是您可以使用的查询示例:

filter @type = “REPORT”
  | stats count(@type) as countInvocations, 
    count(@initDuration) as countColdStarts, 
    (count(@initDuration)/count(@type))*100 as percentageColdStarts,
    max(@initDuration) as maxColdStartTime,
    avg(@duration) as averageDuration,
    max(@duration) as maxDuration,
    min(@duration) as minDuration,
    avg(@maxMemoryUsed) as averageMemoryUsed,
    max(@memorySize) as memoryAllocated,  (avg(@maxMemoryUsed)/max(@memorySize))*100 as percentageMemoryUsed 
  by bin(1h) as timeFrame

您可以使用这个方法来比较这两个管道。您还可以使用X-Ray来追踪Lambda函数,X-Ray守护程序会记录有关函数调用和执行的详细信息。

问题)您建议采取什么方法来降低/解决成本?有三个方面可以考虑:

  1. 如果你的Lambda函数仍然受到冷启动的影响,你可以使用Reserved Concurrency来限制函数的并发实例数量。如果我了解您的工作负载,就是同一个 Lambda,只是接收了不同的参数,因此您可以使用预置并发来确保不会创建 200 个函数实例。您需要测试我们不同的最大并发实例数,以找到最能满足您对成本和速度的要求的方法。
  2. 确保您正在优化静态初始化
  3. 使用 AWS Lambda Power Tuning 对函数进行分析,以确保您使用了最经济和/或性能最佳的内存配置。
profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen