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

2 分钟阅读
0

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

简短描述

要解决 CloudFront 的延迟增加问题,请首先确定以下哪些事件导致了延迟:

  • 请求在客户端和 CloudFront 边缘站点之间传输所花费的时间。这包括域名系统 (DNS) 查询过程以及 TCP 和 SSL/TLS 协商。
  • 请求在 CloudFront 和源之间传输所花费的时间。这包括源 DNS 查询过程、与源的 TCP 和 SSL/TLS 协商,以及源处理和响应对象所花费的时间。

然后,按照导致最大延迟的事件对应的故障排除步骤进行操作。

解决方法

确定导致 CloudFront 延迟的事件:

要确定哪些事件会导致 CloudFront 延迟,请执行以下操作之一:

  • 运行以下 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 路径。

根据每个事件或请求的 time-taken,参阅本文中相关的解决方案部分。

如果您过去曾观察到延迟,请在 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 命令。有关详细信息,请参阅 Akamai 网站上的使用 MTR 诊断网络问题
mtr -rw example.com --no-dns

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

减少首字节所用时间 (TTFB) 和所用总时间 (TTL) 的延迟

如果 CloudFront 返回“X-Cache:Hit from cloudfront”

当从最近的边缘站点提供请求时,CloudFront 将返回“X-Cache:Hit from cloudfront”。要减少延迟:

  • 启用 CloudFront 自动压缩以压缩文件并提高下载速度。
  • 使用本地缓存或浏览器缓存来减少对 CloudFront 的请求。在文件上指定 cache-control 标头,以指示 Web 浏览器将网站内容在浏览器内存或本地磁盘中保留一段时间。有关 cache-control 标头的详细信息,请参阅指定 CloudFront 缓存对象的时间

如果 CloudFront 返回“X-Cache:Miss from cloudfront”

将请求发送到源时,如果 CloudFront 返回“X-Cache:Miss from cloudfront”。要减少延迟:

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

相关信息

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

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

AWS 官方
AWS 官方已更新 10 个月前