来自Lambda的AWS SDK调用时间超过30秒

时间:2018-04-25 09:19:50

标签: node.js amazon-web-services amazon-s3 aws-lambda amazon-dynamodb

我在AWS中有一个NodeJs Lambda函数需要读取一些数据。作为数据来源,我们尝试了两个选项 - S3DynamoDB。它们都有相同的问题 - 当我们进行负载测试(100秒内10 req / sec)时,对S3/DynamoDB的一些请求在30秒内无法完成,这是我们的Lambda超时。请求本身非常轻松 - 对于S3它是1KB文件而对于DynamoDB,它是一个只有一个记录的表。平均而言,这些请求的时间不到100毫秒,但有时我们会谈到这些非常长的峰值。

如此长的请求率非常小 - 不到1%,但这对我们来说仍然是不可接受的。此外,我没有看到为什么我们有如此长的回应的原因。

我们注意到的另一件事是,那些30秒+请求通常在不调用S3/DynamoDB资源的长时间(4小时或更长时间)之后发生。

我能想到的唯一原因是,在长时间不活动期后,AWS基础设施无法足够快地创建所需数量的ENI。需要ENI,因为S3DynamoDB都是通过aws-sdk通过HTTP调用的。但这只是一个我不知道如何验证的猜测。

目前,我正在考虑通过向S3/DynamoDB提出请求来预热ENI,但我还没有尝试过。

如果有人遇到过类似的问题,我会很感激如何解决这个问题。

P.S。增加Lambda超时不是我们的选择。 30秒足以做出这么简单的电话。

0 个答案:

没有答案