预配并发不解决 lambda 冷启动
Provisioned concurrency not resolving lambda cold start
我有一个由 AWS API 网关调用的非常基本的 lambda 函数,lambda 所做的只是调用 AWS SNS 来发送文本消息。 lambda 版本化并配置了 1 个预置并发,状态为“Ready”
在 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);
我有一个由 AWS API 网关调用的非常基本的 lambda 函数,lambda 所做的只是调用 AWS SNS 来发送文本消息。 lambda 版本化并配置了 1 个预置并发,状态为“Ready”
在 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);