如何解决 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 路径。

根据每个事件或请求花费的时间,参阅本文中相关的解决方法部分。

如果您过去曾观察到延迟,请在 CloudFront 访问日志中勾选花费的时间到达第一个字节的时间字段。CloudFront 访问日志不会记录客户端进行 DNS 查找过程以及 TCP 和 SSL/TLS 协商所花费的时间

减少 DNS 解析的延迟

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

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

  • 检查您的本地网络带宽和互联网带宽。
  • 检查您的互联网服务器提供商或路由器是否有任何网络中断。
  • 通过您的互联网服务提供商或网络路由,优化您的本地网络性能。
  • 确认使用正确的 DNS 解析器将允许您的 Web 浏览器查找最近的正确 POP 位置。
  • 要提高 HTTPS 站点性能,请缩短您的认证链。
  • 延迟可能由防火墙、代理或本地路由器引起。要确定其中哪一个导致延迟,请从您的系统运行以下 MTR 命令。有关详细信息,请参阅使用 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 的请求。指定文件上的缓存控制标头,以指示 Web 浏览器将网站内容在浏览器的内存中或本地磁盘中保留一段时间。有关缓存控制标头的更多信息,请参阅指定 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 自动压缩支持,请在您的源中预压缩该文件,并使用内容编码标头提供该文件。
  • 通过启用源延迟指标来检查从源到 CloudFront 的延迟。**注意:**标准 CloudWatch 费率适用。
  • 开启 CloudFront 原始护盾
  • 在启用服务器-计时标头功能的情况下添加响应标头策略。此功能可以帮助您了解导致 CloudFront 和源之间延迟的事件。

相关信息

如何减少来自 CloudFront 的缓慢响应的延迟?

我如何排查在 Amazon S3 上托管并通过 CloudFront 提供的静态网站上的延迟?

我应该给 AWS Support 提供什么信息来用于诊断 CloudFront Web 分发延迟问题?

如何确定是什么原因导致 API Gateway 中的边缘优化 API 端点的请求延迟?

AWS 官方
AWS 官方已更新 2 年前
没有评论