我發現 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
注意: 請使用 CloudFront 網域名稱或替代網域名稱 (CNAME) 和 URL 路徑取代範例.com。
請根據每個事件或請求的 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 網站效能,請保持簡短的認證鏈。
- 延遲可能是由防火牆、Proxy 或本機路由器所造成。若要判斷是哪些項目造成延遲,請從在您的系統上執行下列 MTR 命令。如需詳細資訊,請參閱 Akamai 網站上的使用 MTR 診斷網路問題。
mtr -rw example.com --no-dns
注意: 將 example.com 取代為網域名稱。
減少第一個位元組所需的時間 (TTFB) 和總耗時 (TTL) 的延遲
如果 CloudFront 傳回「X-Cache:Hit from cloudfront」 (來自 cloudfront 的 X-Cache:Hit)
從最近的邊緣節點提供請求時,CloudFront 會傳回「X-Cache:Hit from cloudfront」(來自 cloudfront 的 X-Cache:Hit)。若要減少延遲:
如果 CloudFront 傳回「X-Cache:Miss from cloudfront」(來自 cloudfront 的 X-Cache:Miss)
如果在請求傳送至來源時,CloudFront 傳回「X-Cache:Miss from cloudfront」(來自 cloudfront 的 X-Cache:Miss)。若要減少延遲:
相關資訊
如何降低來自 CloudFront 的緩慢回應延遲?
我需要提供哪些資訊給 AWS Support,以診斷 CloudFront 網頁發佈延遲問題?