如何疑難排解並減少 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 路徑。

  • 在 Web 瀏覽器的開發人員工具中,檢查網路請求的每個階段需花費多久時間。例如,如果您使用的是 Mozilla Firefox,則 [時刻] 標籤會提供此資訊。

根據每個事件或請求的 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 網站效能,請保持簡短的認證鏈。
  • 延遲可能是由防火牆、Proxy 或本機路由器造成的。若要確定哪些項目造成延遲,請從系統執行下列 MTR 命令。如需詳細資訊,請參閱使用 MTR 診斷網路問題
mtr -rw example.com --no-dns

注意:將 example.com 換成您的網域名稱。

減少第一個位元組所用時間 (TTFB) 和總使用時間 (TTL) 的延遲時間

如果 CloudFront 傳回 "X-Cache:Hit from cloudfront" (X-Cache:從 CloudFront 命中)

從最近的邊緣站點發出請求時,CloudFront 會傳回 "X-Cache:Hit from cloudfront" (X-Cache:從 CloudFront 命中)。若要減少延遲:

如果 CloudFront 傳回 "X-Cache:Miss from cloudfront" (X-Cache:從 CloudFront 未命中)

如果 CloudFront 在將請求傳送給原始位置時傳回 "X-Cache:Miss from cloudfront" (X-Cache:從 CloudFront 未命中)。若要減少延遲:

  • 縮短 CloudFront 邊緣站點到原始位置之間的往返時間 (RTT)。如果來自 CloudFront 邊緣站點的請求傳送到最近的原始位置,則 RTT 會較少。但是,如果請求來自地理位置遠離原始的邊緣站點,則 TTFB 會受到影響。若要最佳化 RTT,請在離使用者更近的多個地區複製原始伺服器。然後,設定原始網域名稱的 DNS,以便根據延遲或地理位置,將請求路由到原始伺服器。如果您使用 Amazon Route 53 做為 DNS 供應商,請參閱選擇路由政策以取得詳細資訊。
  • 開啟 CloudFront 自動壓縮功能來壓縮檔案,並降低下載速度。如果 CloudFront 自動壓縮不支援您的檔案格式,請在原始位置預先壓縮該檔案,並使用 Content-Encoding 標頭提供該檔案。
  • 透過啟用原始延遲指標,檢查從原始位置到 CloudFront 的延遲。**注意:**適用標準 CloudWatch 費率
  • 開啟 CloudFront Origin Shield
  • 新增開啟 Server-Timing 標頭功能的回應標頭政策。此功能可協助您了解在 CloudFront 與原始之間造成延遲的事件。

相關資訊

如何減少 CloudFront 的緩慢回應延遲?

如何對託管在 Amazon S3 上,並透過 CloudFront 提供服務的靜態網站延遲問題進行疑難排解?

應向 AWS Support 提供哪些資訊以診斷 CloudFront Web 分佈延遲問題?

如何確定是什麼導致了 API Gateway 中邊緣最佳化 API 端點的請求延遲?

AWS 官方
AWS 官方已更新 2 年前