【发布时间】:2018-11-30 07:03:48
【问题描述】:
我们使用 Lambda 为通过新闻媒体网站访问的 API(通过 API 网关)提供动力,接收波动但高负载的流量。我们开始遇到限制,因此我们将并发限制提高到 2000。但是,我们仍然每天多次遇到限制。
奇怪的是,在 CloudWatch 指标中,当我们受到限制时,并发请求的峰值约为 600 或更低。以 CloudWatch 图表为例:
以前有没有人经历过这种情况?你认为为什么会这样?我们能做些什么呢?
更多信息
- 此图表涵盖了我们整个地区的所有 Lambda。
- 当发生限制时,它会发生在所有 Lambda 实例中。
- 我们主要通过 API Gateway 触发 Lambda,但也有少数通过 SNS 触发(数据速率相当高)。
- 我们在所有 API 前面都有 CloudFront,其中一些我们有 5 秒的缓存时间(对于超级频繁请求的 API - 为我们节省了美元)
此外,这里还有一张图片,它还显示了同一时间段内的总调用次数和平均持续时间。很难知道什么是因果关系(由于节流而导致持续时间延长,反之亦然,因为某些 lambdas 确实调用了其他 lambdas)。请查看相应的轴,因为比例非常不同。
【问题讨论】:
-
可以在此处找到有关每个指标的详细信息:docs.aws.amazon.com/lambda/latest/dg/…
-
您的 Lambda 函数是否启用了重试选项?
-
我认为 API Gateway 不会重试调用 Lambda,它只是向客户端返回一个错误代码。
-
我的一个想法是,这可能只是 CloudWatch 可视化问题?如果并发计数在几秒钟内飙升至 2000,它将被限制,但可能不会持续足够长的时间来报告。
-
我们仍然没有解决方案,但我们的下一个调查是 CloudWatch 可能在 Lambda 并发峰值方面误导了我们。试图从 AWS 支持中获得答案。
标签: amazon-web-services aws-lambda aws-api-gateway throttling