跳至内容

如何解决 CloudFront 的延迟增加问题并减少延迟?

2 分钟阅读
0

我看到来自 Amazon CloudFront 的响应延迟增加了。我想确定原因并减少延迟。

简短描述

要对 CloudFront 的延迟进行故障排除,请确定导致延迟的事件。然后,按照这些故障排除步骤来减少延迟。

解决方法

确定导致延迟的事件

完成以下步骤:

  1. 运行以下 curl 命令:
    curl -w "DNS_resolution: %{time_namelookup}| TCP_negotiation_time: %{time_connect}| SSL_negotiation_time: %{time_appconnect}| TTFB: %{time_starttransfer}| Total time: %{time_total} \n" -o /dev/null -vsL https://www.example.com
    
    注意: 请将 example.com 替换为您的 CloudFront 域名或备用域名 (CNAME) 和 URL 路径。
  2. 在 Web 浏览器的开发人员工具中查看网络请求的每个阶段所花费的时间。例如,如果您使用 Mozilla Firefox,请查看 Timings 选项卡。有关详细信息,请参阅 Firefox 网站上的 Timings 选项卡。如果您过去曾观察到延迟,请在 CloudFront 访问日志中勾选 time-takentime-to-first-byte 字段。CloudFront 访问日志不会记录客户端进行 DNS 查询过程以及 TCP 和 SSL/TLS 协商所花费的时间。

减少 DNS 解析的延迟

完成以下步骤:

  • 增加客户端 DNS 中的 DNS 缓存时间。
  • 增加本地 DNS 服务器中缓存的生存时间 (TTL)
  • 增加 DNS 注册商中 DNS 记录的 TTL
  • 如果您的互联网服务提供商的解析器 DNS 服务器导致延迟,请使用公共 DNS 服务器。

减少 TCP 和 SSL/TLS 协商时间中的延迟

完成以下步骤:

  • 检查您的本地网络带宽和互联网带宽。
  • 检查您的互联网服务提供商或路由器中是否存在任何网络中断。
  • 通过互联网服务提供商或网络路由优化您的本地网络性能。
  • 确保 DNS 解析器允许您的 Web 浏览器找到最近且正确的 POP 位置。
  • 要提高 HTTPS 站点性能,请缩短您的认证链。
  • 防火墙、代理或本地路由器可能会导致延迟。要诊断网络延迟,请运行以下 MTR 命令:
    mtr -rw example.com --no-dns
    

注意: 请将 example.com 替换为您的域名。

减少 TTFB、TTL 和 RTT 中的延迟

完成以下步骤以减少首字节所用时间 (TTFB)、所用总时间 (TTL)、往返时间 (RTT) 中的延迟。

CloudFront 返回“X-Cache: Hit from cloudfront”响应值

当请求来自最近的边缘站点时,CloudFront 将返回“X-Cache:Hit from cloudfront”。要减少延迟,请完成以下步骤:

CloudFront 返回“X-Cache: Miss from cloudfront”响应值

当请求转到来源时,CloudFront 将返回“X-Cache:Miss from cloudfront”。要减少延迟,请完成以下步骤:

  • 缩短 CloudFront 边缘站点到您的来源位置之间的 RTT。如果来自 CloudFront 边缘站点的请求转到最近的来源位置,则 RTT 会缩短。但是,如果请求来自地理上距离来源较远的边缘站点,则 TTFB 会受到影响。要优化 RTT,请在地理上更接近用户的多个 AWS 区域中复制原始服务器。然后,设置来源域名的 DNS,以便其根据延迟或地理位置将请求路由到原始服务器。如果使用 Amazon Route 53 作为 DNS 提供商,请参阅选择路由策略以了解详细信息。
  • 启用 CloudFront 自动压缩以压缩文件并降低下载速度。如果您的文件格式不受 CloudFront 自动压缩支持,请在您的来源中预压缩该文件,并添加 Content-Encoding 标头
  • 要检查从来源到 CloudFront 的延迟,请启用来源延迟指标。**注意:**标准 CloudWatch 费率适用。
  • 启用 CloudFront Origin Shield
  • 在启用 Server-Timing 标头功能的情况下添加响应标头策略。此功能可帮助您了解导致 CloudFront 与来源之间延迟的事件。

相关信息

如何减少由于 CloudFront 的缓慢响应造成的延迟?

要诊断 CloudFront Web 分配延迟问题,我需要向 AWS Support 提供哪些信息?

AWS 官方已更新 9 个月前