我看到来自 Amazon CloudFront 的响应延迟增加了。我想确定原因并减少延迟。
简短描述
要解决 CloudFront 的延迟增加问题,请首先确定以下哪些事件导致了延迟:
- 请求在客户端和 CloudFront 边缘站点之间传输所花费的时间。这包括域名系统 (DNS) 查询过程以及 TCP 和 SSL/TLS 协商。
- 请求在 CloudFront 和源之间传输所花费的时间。这包括源 DNS 查询过程、与源的 TCP 和 SSL/TLS 协商,以及源处理和响应对象所花费的时间。
然后,按照导致最大延迟的事件对应的故障排除步骤进行操作。
解决方法
确定导致 CloudFront 延迟的事件:
要确定哪些事件会导致 CloudFront 延迟,请执行以下操作之一:
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 路径。
- 在 Web 浏览器的开发人员工具中查看网络请求的每个阶段所花费的时间。例如,如果使用的是 Mozilla Firefox,则“计时”选项卡会提供这些信息。
根据每个事件或请求的 time-taken,参阅本文中相关的解决方案部分。
如果您过去曾观察到延迟,请在 CloudFront 访问日志中勾选 time-taken 和 time-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 返回“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 提供哪些信息?