设置的并发无法解决lambda冷启动

问题描述

我有一个非常基本的lambda函数,该函数由AWS API Gateway调用,而所有lambda所做的只是调用AWS SNS来发送文本消息。对lambda进行版本控制,并配置了1个配置的并发,状态为“就绪”

在20-30分钟后首次调用版本化的lambda时,我的冷启动延迟高达13秒。

下面是AWS API网关日志,详细记录了在调用带有预配置并发性的版本化lambda之后获得响应所需的时间。

Thu Oct 15 19:32:06 UTC 2020 : Sending request to https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789:function:sms-service-lambda-dev-test-01:3/invocations
Thu Oct 15 19:32:19 UTC 2020 : Received response. Status: 200,Integration latency: 12550 ms

但是所有后续调用都运行得很快

Thu Oct 15 19:50:19 UTC 2020 : Sending request to https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789:function:sms-service-lambda-dev-test-01:3/invocations
Thu Oct 15 19:50:20 UTC 2020 : Received response. Status: 200,Integration latency: 713 ms

有什么主意我可能会想念的吗?

解决方法

我能够进行更精细的调试,发现冷启动实际上发生在Amazon SNS端。

在使用dotnet AWS SDK将消息发布到AWS SNS时,我发现对AWS SNS的首次呼叫似乎需要7秒钟左右的冷启动,而随后对AWS SNS的所有呼叫都不到一秒钟

PublishResponse pubResponse = await snsClient.PublishAsync(pubRequest);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...