当我向集成 AWS Lambda 函数的 Amazon API Gateway API 发出请求时,响应时间很慢。我想确定高延迟的原因。
解决方法
当与 Lambda 函数集成的 API 端点向客户端发送响应所花的时间过长时,必须解决高延迟问题。查看 API Gateway 的指标,以确定请求/响应流中导致高延迟的部分。确定高延迟的原因后,您可以努力减少延迟。
筛选 CloudWatch 指标以查看 API 上的延迟指标
要确定请求/响应流中导致高延迟的部分,请首先执行以下步骤:
- 向 API 发送请求后,观察客户端的延迟。
- 记下整体延迟后,打开 Amazon CloudWatch 控制台。在左侧导航窗格中,选择 Metrics(指标),然后选择 All metrics(所有指标)。在指标搜索框中,输入 APIGateway。从搜索结果中选择 API Gateway,然后选择 ApiId。
- 在 API 列表中,使用 API ID 或 API 名称筛选指定的 API。筛选后,选中 IntegrationLatency 和 Latency(延迟)复选框。
**注意:**API ID 和 API 名称可从 API Gateway 控制台获取。
- 打开 Graphed metrics(绘成图表的指标)选项卡。对于 Statistic(统计数据),选择 Maximum(最大值)。对于 Period(周期),选择 1 minute(1 分钟)。在图表上方,选择 Custom(自定义)时间段。选择客户端经历高延迟的时间范围。
- 查看 IntegrationLatency 和 Latency 指标。记下这些指标值较高时的值和时间戳。这些值可以解释高延迟的原因。
比较指标以确定高延迟的原因
继续查看与请求/响应流相关的指标,以找出高延迟的原因:
- 将 API Gateway Latency 指标与在客户端观察到的总体延迟值进行比较。
例如,API 的 Latency 指标的 Maximum(最大值)约等于客户端的 Max Latency(最大延迟)值。这些值表明,请求/响应流中的最大延迟是 API Gateway 处理请求所花费的时间。API Gateway 处理时间包括向 Lambda 发送请求、等待 Lambda 的响应以及向客户端发送响应所花费的时间。
- 将 API 的 IntegrationLatency 指标与 Latency 指标进行比较。
例如,IntegrationLatency 指标大致等于 Latency 指标。这些值表明 API 的延迟主要是由发送到 Lambda 的后端请求造成的,这些请求需要更长的时间才能响应。IntegrationLatency 指标包括 API Gateway 发送请求和 API Gateway 从后端收到响应之间的时间
- 与 API 的 Latency 指标相比,当 IntegrationLatency 指标较低时,后端响应时间很短。在这种情况下,处理 API 请求或响应需要更长的时间。
例如,在 API 或 API Gateway Lambda 授权方中配置的映射模板都可能会造成延迟。
- 当 API 的 Latency 指标远低于在客户端观察到的延迟时,该路由可能会导致延迟。查看客户端和 API Gateway 之间的路由,确认是否有任何中间端点增加了延迟。
例如,私有 VPN 连接或代理可能会造成延迟。
查看 Lambda 指标以确定 IntegrationLatency 较高的原因
最后,重点关注与请求/响应流相关的 Lambda 指标,以找出 IntegrationLatency 较高的原因:
- 检查 Lambda 函数 Duration 指标,以确认 Lambda 函数的执行时间是否更长。如果 Lambda 函数的执行时间延长,请查看 CloudWatch 日志,找出导致高延迟的代码部分。默认情况下,Lambda 函数在 CloudWatch 日志中记录 START、END 和 REPORT 语句。请在 Lambda 函数代码的每个逻辑部分添加自定义日志语句以获取详细的 CloudWatch 日志。
- 如果 Duration 指标在客户端的高延迟期间没有变化,请确定初始化时间是否延长。Lambda 函数中的初始化时间是设置执行环境以处理请求所花费的时间。来自 API Gateway 的请求可能需要新的环境来处理。这是通过 Lambda 设置的。通常,存在于 Lambda 函数处理程序之外的代码在初始化期间运行。需要更长时间才能完成的代码可能会导致客户端的整体响应时间延迟。
注意: 初始化时间称为 INIT 或冷启动。
- 通过验证 Lambda 函数日志中的报告语句,确认初始化时间的 Duration 是否有任何延长。某些请求的初始化时间过长可能会导致 API Gateway 的 IntegrationLatency 指标增加。
相关信息
使用 HTTP API 的指标
Amazon API Gateway 维度和指标
使用 CloudWatch 指标监控 WebSocket API 执行
在 CloudWatch 控制台上查看指标
Lambda 运行时环境生命周期