Lambda DynamoDB 查询非常慢 - 冷启动?

问题描述 投票:0回答:1

我正在使用 java SDK 从 Lambda 查询 DynamoDB 表,经过一定时间(5-10 分钟)后,下一个查询非常慢 - 大约 5 秒。此后不久再次进行相同的查询,速度非常快(毫秒),但经过长时间的延迟后,似乎出现了某种冷启动。

下面是来自cloudwatch的日志:Dynamodb查询发生在这2个日志语句之间

  • 2023-12-07T11:39:59.041+02:00 获取 ssoid 17354 的令牌
  • 2023-12-07T11:40:02.779+02:00 登录令牌:{eyJh...

如果我不久之后再次跑步:

  • 2023-12-07T11:41:10.014+02:00 获取 ssoid 17354 链接的令牌
  • 2023-12-07T11:41:10.238+02:00 登录令牌:{eyJh

谁能告诉我我在这里缺少什么吗?

amazon-dynamodb
1个回答
0
投票

这里有一些事情在起作用:

Lambda 冷启动

Lambda 冷启动是指 AWS Lambda 函数在空闲后调用时的延迟。它涉及资源分配、运行时初始化和代码加载。影响持续时间的因素包括功能复杂性和依赖性。为了解决这个问题,您可以优化代码、使用预配置并发或实施预热技术以提高应用程序的响应速度。

DynamoDB 冷启动

对于每个新加载的 Lambda 容器,都必须启动 TLS 连接。此过程可能会导致显着的延迟,尤其是在通常需要毫秒级响应的情况下。

此外,与 Lambda 类似,DynamoDB 也会遇到类似于冷启动的现象。 DynamoDB 利用缓存的元数据,包括用于高效数据检索、身份验证、授权信息和其他内部元数据的分区详细信息。这种缓存机制对于保证系统的高效运行至关重要。

解决方案

当 Lambda 请求不频繁时,缓解 DynamoDB 冷启动和 TLS 连接挑战的选项有限。然而,正如 Lambda 部分中所讨论的,尽量减少 Lambda 冷启动的努力可以产生积极的连锁反应,也可能有助于减少 DynamoDB 延迟。

© www.soinside.com 2019 - 2024. All rights reserved.