gpt4 book ai didi

amazon-web-services - AWS Lambda 执行持续时间随机激增并导致超时

转载 作者:行者123 更新时间:2023-12-04 08:05:43 28 4
gpt4 key购买 nike

我正在构建一个无服务器 Web 跟踪系统,该系统使用 AWS API Gateway 为其跟踪像素提供服务,只要跟踪请求到达,它就会调用 Lambda 函数以将跟踪事件写入 Kinesis 流。

Lambda 函数本身并没有做任何花哨的事情。它只是接受传入事件(它自己的参数)并将其写入流。本质上,它只是:

import boto3
kinesis_client = boto3.client("kinesis")

kinesis_stream = "my_stream_name"

def return_tracking_pixel(event, context):
...
new_record = ...(event)
kinesis_client.put_record(
StreamName=kinesis_stream,
Data=new_record,
PartitionKey=...
)
return ...

有时我会遇到 Lambda 执行持续时间的奇怪峰值,导致我的一些 Lambda 函数调用超时和跟踪请求丢失。

这是受影响时间段内 Lambda 函数的 1 分钟调用计数图:

enter image description here

在 20:50 到 23:10 之间,我突然看到许多调用错误(1 分钟错误计数):

enter image description here

这显然是由 Lambda 执行超时引起的(以 1 分钟为间隔的最长持续时间):

enter image description here

我的 Kinesis 流(数据输入、放置记录的数量、put_record 成功计数等,一切看起来都很正常)和我的 API GW(调用次数对应于 API GW 调用的次数,好吧)都没有发生任何奇怪的事情在 API GW 的限制内)。

什么可能导致 Lambda 函数执行持续时间突然(并且看似随机发生)峰值?

编辑: lambda 函数都没有受到限制,这是我的第一个想法。

最佳答案

只是增加我的 2 美分,因为没有额外的日志记录或一些 X 射线分析,没有太多的调查工作。
AWS Lambda 有时会强制回收容器,即使您的函数正在合理地执行和预热,也会感觉像冷启动。这可能会带来所有与冷启动相关的问题,例如如果您的 Lambda 具有附加的 VPC,则 ENI 的额外延迟等等......但即使对于像您这样的简单功能,1 秒超时有时对于冷启动来说也过于乐观。
我不知道关于这些强制回收的任何文件,除了一些人有证据。

"We see a forced recycle about 7 times a day." source

"It also appears that even once warmed, high concurrency functions get recycled much faster than those with just a few in memory." source


我想知道你如何确认是这种情况。也许您可以检查 Cloud Watch 日志流中出现的那些错误是否来自以前从未出现过的容器。

关于amazon-web-services - AWS Lambda 执行持续时间随机激增并导致超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41716949/

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