gpt4 book ai didi

amazon-s3 - 零星的 Lambda 超时

转载 作者:行者123 更新时间:2023-12-05 07:29:26 26 4
gpt4 key购买 nike

我们有一个具有 S3 ObjectCreated 触发器的 lambda。当文件上传到我们帐户中的某个 S3 存储桶和目录时,lambda 使用 boto3(Python AWS SDK)下载文件,对内容进行分块,并将分块放入许多较小的 S3 文件中通过并行处理使用 boto3upload_file 函数的不同存储桶(概述了 Python Lambda 函数中并行处理的策略 here )。

平均处理时间约为 2 分 30 秒。然而,S3 的响应时间总体上比预期的要长得多,不可避免地会有一两个 lambda 因超时错误而失败。失败率非常低,并且超时设置为 5 分钟,我们无法弄清楚为什么当大多数 lambda 执行只需要 2:30 时我们确实会遇到零星的超时失败。

我们在每个 lambda 上使用尽可能高的内存,并且我们已将 lambda 的并发设置为 30,以努力限制执行不超过 S3 PUT 对象限制。

我们认为这不是代码性能问题,因为大多数执行都在超时限制内,我们倾向于认为它与 AWS 相关。我们无法确定如何增加对 S3 的可靠且及时的大量 PUT 请求。

S3 或 Lambda 的其他配置设置是否有帮助?或者,是否有更好的方法使用 boto3 来减少整体处理时间并消除偶发故障?

最佳答案

默认的 boto3 重试模式(Legacy)不处理一些错误/异常,包括 RequestThrottledPriorRequestNotCompleteConnectionError超出带宽限制。现在,使用 Standard retry mode 可能会更好反而。提出这个问题时新模式不存在,它是 introduced in February 2020 .但是,这些未处理的错误很可能是当时导致此问题的原因。

import boto3
from botocore.client import Config as BotoConfig

TIMEOUT = 3
config = BotoConfig(connect_timeout=TIMEOUT, retries={"mode": "standard"})
client = boto3.client("s3", config=config)

关于amazon-s3 - 零星的 Lambda 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52768499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com