【问题标题】:Can/will AWS API Gateway -> Lambda performance be improved?AWS API Gateway -> Lambda 性能能否/将得到改善?
【发布时间】:2017-01-29 04:50:48
【问题描述】:

有没有人找到解决 API Gateway 延迟问题的方法?

通过简单的函数测试 API Gateway -> Lambda 交互,我经常看到 2.5 秒范围内的冷启动,而一旦“升温”,响应时间通常在 900 毫秒 - 1.1 秒范围内。

我了解 TLS 握手有其自身的开销,但从我的位置测试类似资源(基于 AWS 或我认为不是地理分布的一般站点)显示的结果只有一半,约 500 毫秒。

AWS 很快就会有好消息吗?

(发帖前我已经阅读了所有能找到的内容。)

【问题讨论】:

  • 直接在 AWS Lambda 中执行您的函数需要多长时间(在没有 API 网关的情况下使用控制台中的 Test 按钮)?
  • @KhalidT。从控制台?当然,这是微不足道的:16 或 18 毫秒。这些是用于测试响应时间的“Hello world”等价物。 :)
  • 使用“Hello World”测试可能无法反映实际执行时间(除非您在测试 API 网关时使用相同的模板)。尝试使用您通常期望接收的实际值修改模板,这将使您的函数在所有执行路径中完全运行。这里的想法是找出瓶颈;无论是 Lambda 函数本身还是 API Gateway 集成。
  • 使用Postman,我使用 API Gateway 的 Lambda 函数 (Node.js) 通常平均有 250 ~ 350 毫秒的响应时间。
  • 可能以迂回的方式有用:据我观察并随后由 API Gateway 内部人员在comments on this question 中确认,API Gateway 的控制台测试功能在历史上并不是对实时行为的完美模拟.我推测这也可以解释测试和现场之间的部分性能差异,尽管我不知道是什么潜在因素导致了行为差异。

标签: amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

这里是 API Gateway 团队的工程师。

您说您已经阅读了“所有内容”,但对于其他人的上下文,我想链接到我们论坛上的许多线程,我已经公开记录了执行单个 API 调用时会出现很多这种感知延迟的地方来自:

一般来说,随着您提高调用率,您的平均延迟会缩短,因为可以利用您的客户端和 CloudFront 之间以及 CloudFront 和 API Gateway 之间的连接重用机制。此外,更高的调用率将确保您的 Lambda 是“温暖的”并准备好为请求提供服务。

话虽如此,但我们痛苦地意识到我们没有达到许多客户的性能标准,并且正在朝着改进这一目标迈进:

  • Lambda 团队一直在努力改善冷启动时间,并尝试为持续负载的函数删除它们。

  • 在 API Gateway 上,我们目前正在推出改进的 CloudFront 和 API Gateway 之间的连接重用,客户将能够从通过其他 API 建立的连接中受益。这应该意味着需要在 CloudFront 和 API Gateway 之间进行完整 TLS 握手的请求百分比应该减少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多