【问题标题】:AWS ApiGateway Latency IssueAWS ApiGateway 延迟问题
【发布时间】:2018-01-09 13:41:12
【问题描述】:

我目前正在将 AWS Lambda 用于我的内部应用程序,以使用由 jrestless 实现的 spring 框架进行应用程序调用。

应用程序调用运行完美,延迟适中(理想情况下约为 10-15 毫秒)

但是当我尝试通过 API Gateway 使用相同的 lambda 函数时,延迟会高达 700-800 毫秒。即使我的 lambda 函数也需要 10-15 毫秒。

Lambda 函数配置:

VPC: open(no vpc)
Region: ap-south-1(Mumbai)
Memory: 1500 MB(Highest)
Timeout: 5 min(Highest)

API 网关配置:

Region: ap-south-a(Mumbai)
Request Integration: proxy+
Request Method: ANY

没有使用身份验证,它是一个 HTTPS 调用。

有没有人遇到过类似的问题?

【问题讨论】:

  • 当然。 900-1200ms 对我来说是典型的,即使使用预热的 Lambda 函数(从我的角度来看这是一个红鲱鱼问题)对于“Hello World”等效返回 JSON(他们的宠物商店示例),来自区域 closest 给我的。同时,我编写的一个简单的服务器程序在 EC2 微实例上运行 1)从 RDS 返回数据,应该更慢,2)离我 最远区域,一般最多 600ms 往返,所以通常是响应时间的一半,通常更少。 AWS 代表对此类问题的回答并不令人满意。

标签: java aws-lambda aws-api-gateway serverless-framework


【解决方案1】:
  1. 如果您对引入延迟的位置感到好奇,API Gateway 提供了两个 CloudWatch 指标:LatencyIntegrationLatencyLatency 是 API Gateway 记录的服务器端总延迟,IntegrationLatency 只是后端请求/响应的延迟。这两个指标之间的区别在于 API Gateway 服务器端开销。客户端延迟与Latency 指标之间的任何差异都将是网络/TLS/连接延迟。
  2. 我们最近推出了“区域”端点类型,这是客户端与 API 本身位于同一 AWS 区域的用例的一个选项。这应该会使您的延迟更接近直接调用 Lambda 时获得的延迟。
  3. 延迟通常会随着音量的增加而改善
  4. Lambda 本身总是有开销,并且它们不会暴露服务器端开销(与 API 网关不同)。 Lambda 公开的duration 只是您需要付费的函数持续时间。它并不表示总延迟。

【讨论】:

    【解决方案2】:

    我也遇到过 api 网关的延迟问题,但我没有确切的数字。然而,到目前为止,API 网关的设计存在延迟问题,并且一直在持续。

    https://forums.aws.amazon.com/thread.jspa?threadID=225458

    根据工程师的说法,我认为 700ms 有点高。

    以防万一 lambda 存在热启动和冷启动的另一个问题。当你第一次调用 lambda 时,延迟有点高。如以下博客文章所述,有几种解决方法可以克服这个问题

    https://serverless.com/blog/keep-your-lambdas-warm/

    【讨论】:

    • 我对 lambda 冷启动没有任何问题。已经有调度程序来保持我的 lambda 函数正常运行。但由于 api 网关延迟,我无法在生产环境中上线。
    • 我刚刚检查了我们在一个 api 网关 api 中实现的最小延迟,它是 260 毫秒。但是我找到了一个 api 网关工程师给出的答案。 stackoverflow.com/questions/41865304/…。不幸的是,这就是我现在所拥有的一切
    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2011-01-14
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多