当客户端向 Amazon API Gateway 中的边缘优化 API 发送请求时,我体验到较高的延迟。如何找到延迟的来源?

要查找边缘优化 API 的延迟来源,请确定连接路径的每个部分(每个步骤)所花费的时间:

重要提示:这些步骤适用于边缘优化的 API,但不适用于区域 API。由于边缘优化的 API 是通过 Amazon CloudFront 分配访问的,因此连接路径包括 CloudFront 步骤。

  1. 在连接路径中前进到 DNS 名称解析。
  2. 在连接路径中前进到进行 TCP 握手以连接到 CloudFront。
  3. 在连接路径中前进到进行 SSL 握手以连接到 CloudFront。
  4. 在连接路径中前进到将客户端 HTTP 请求发送到 CloudFront。
  5. 在连接路径中前进到从 CloudFront 传输第一个字节。
  6. 请求和响应 API 的总时间。
  7. API Gateway 处理请求并响应 CloudFront 边缘位置。
  8. 集成终端节点响应来自 API Gateway 的 HTTP 请求。
  9. API Gateway 响应 CloudFront 边缘位置与 CloudFront 响应客户端之间。

使用 curl 查看延迟

要获取流程中几个步骤的持续时间,请使用 Amazon Web Services - 实验 GitHub 网站上的 curl_for_latency 脚本。

注意:请务必更新 URL、HTTP 方法和参数以匹配 API 的详细信息。

该脚本返回这些步骤的时间:

  1. 在连接路径中前进到 DNS 名称解析:“time_namelookup”的值。
  2. 在连接路径中前进到进行 TCP 握手以连接到 CloudFront:“time_connect”的值。
  3. 在连接路径中前进到进行 SSL 握手以连接到 CloudFront:“time_appconnect”的值。
  4. 在连接路径中前进到将客户端 HTTP 请求发送到 CloudFront:“time_pretransfer”的值。
  5. 在连接路径中前进到从 CloudFront 传输第一个字节:“time_starttransfer”的值。
  6. 请求和响应 API 的总时间:“time_total”的值。

检查 API Gateway 处理请求并响应 CloudFront 边缘位置的时间

要获取 API Gateway 处理请求和响应 CloudFront 边缘位置所需的时间,请使用 Amazon CloudWatch 控制台从 API Gateway 查看延迟指标。此指标提供了在特定时间范围内对阶段的所有请求的汇总视图。

CloudWatch 控制台中,为延迟指标图表配置 1 分钟间隔最大值,以查看一分钟时间范围内最长的处理时间。

查看集成终端节点响应来自 API Gateway 的 HTTP 请求的时间

要获取集成端点响应来自 API Gateway 的 HTTP 请求所用的时间,请使用 CloudWatch 控制台查看 IntegrationLatency 指标。此指标提供对集成请求端点的所有请求的汇总视图以及终端节点响应来自 API Gateway 的请求所用的时间。为 IntegrationLatency 指标图表配置 1 分钟间隔最大值

另一种选择是,如果您启用了 CloudWatch Logs,请查看 CloudWatch Logs 以查找包含类似于以下信息的行项:

Received response. Integration latency: 325 ms

注意:如果您正在使用 AWS Lambda,并且您发现集成延迟指标很高,请查看 Lambda 函数的 CloudWatch Logs 以解决函数持续时间增大的问题。由于 Lambda 函数中的冷启动未记录在函数的持续时间指标中,因此您可能会发现集成延迟比函数的持续时间长。要使用冷启动查看您的函数的持续时间,请使用 AWS X-Ray

查看 API Gateway 响应 CloudFront 边缘位置与 CloudFront 响应客户端之间的时间。

要获取 API Gateway 响应 CloudFront 边缘位置与 CloudFront 响应客户端之间的时间,请执行以下步骤:

  1. 获取“请求和响应 API 的总时间”的时间,
  2. 减去“在连接路径中前进到将客户端 HTTP 请求发送到 CloudFront”的时间,
  3. 减去“API Gateway 处理请求并响应 CloudFront 边缘位置的时间”,
  4. 结果得到 API Gateway 响应 CloudFront 边缘位置与 CloudFront 响应客户端之间的时间。

此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 12 月 12 日