當我在 Amazon Simple Storage Service (Amazon S3) 和特定網路或內部部署用戶端之間下載或上傳資料時,遇到延遲的情況。
解決方法
縮短與提出請求之用戶端的距離
最佳實務是使用地理位置盡可能接近本機用戶端的 Amazon S3 儲存貯體。
若要測試用戶端與 S3 儲存貯體之間的地理距離會造成何種影響,請完成以下步驟:
- 在與儲存貯體相同的 AWS 區域中啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
- 在其他區域中啟動另一個執行個體。
- 使用這兩個執行個體上傳及下載相同檔案。
- 比較兩個區域之間的輸送量。
若要縮短本機用戶端與 S3 儲存貯體之間的距離,請採取以下其中一項措施:
檢查本機用戶端的 ISP
檢閱網路路徑是否有封包遺失、網路跳轉次數過多,以及其他與網際網路服務供應商 (ISP) 相關的問題。同時檢查 TCP 重新傳輸、SSL 交握失敗、DNS 解析延遲或網路 Proxy。
若要確定是否可能發生封包遺失,以及傳送至遠端主機之封包的延遲時間,請使用 mtr 和 traceroute 等工具。這些工具也能找出是否有網路跳轉造成較高延遲。例如,以下 Linux traceroute 命令使用 TCP 連接埠 80,測試與 us-west-2 (奧勒岡) 區域端點的連線:
sudo traceroute -P TCP -p 80 s3.us-west-2.amazonaws.com
若使用 Windows 作業系統 (OS),請執行以下 tracert 命令:
tracert -d -4 s3.amazonaws.com
注意: 許多網路裝置不會回應網際網路控制訊息通訊協定 (ICMP)。若要執行更類似於 Amazon S3 請求的測試,請對儲存貯體的區域端點執行 TCP traceroute 或 mtr。
如果用戶端前往 Amazon S3 的網際網路路由並非最佳路徑,請使用 Amazon S3 Transfer Acceleration,透過 Amazon CloudFront 的邊緣節點傳輸資料。使用 Amazon S3 Transfer Acceleration Speed Comparison 工具來判斷 Transfer Acceleration 是否可以提高效能。
注意: 如果您開啟 Transfer Acceleration,則可能會產生額外的資料傳輸費用。請檢閱 Amazon S3 資料傳輸的定價。
檢查本機用戶端的網路
若要確認本機用戶端網路運作正常,請檢查內部封包檢測、防毒掃描或網路存取管理。同時檢查用戶端或應用程式處理 DNS 解析與快取的方式。最佳實務是避免長時間快取 DNS 解析結果。
若要找出因 Amazon S3 同步傳輸緩慢導致的內部部署用戶端延遲與效能問題,請使用網路診斷測試。最佳實務是定期分析效能,在潛在問題影響傳輸速度前加以偵測。
注意: 最佳實務是使用適用於 Amazon S3 的 AWS PrivateLink,以提升安全性及資料傳輸可靠性。
檢查用戶端的資源使用量
提出請求的主機處理請求與回應的方式,可能導致應用程式發生延遲。最佳實務是避免主機內發生資源競爭。例如,CPU、記憶體或網路頻寬可能發生資源競爭。
若要檢查資料傳輸期間的資源使用量,請使用資源監視器或 top 命令等工具。如需更多資訊,請參閱 Microsoft Learn 網站上的資源監視器。
注意: 可用的工具取決於您的作業系統。
如果用戶端儲存裝置發生延遲,其讀取或寫入作業可能會影響從 Amazon S3 下載或上傳至 Amazon S3 的效能。若要從用戶端對儲存裝置的 IOPS 進行疑難排解,請使用 FirstByteLatency Amazon CloudWatch 指標來分析 Amazon S3 效能。
注意: Amazon S3 請求指標的 AWS 計費費率與自訂 CloudWatch 指標相同。如需 CloudWatch 定價資訊,請參閱 Amazon CloudWatch 定價。
檢查傳送至 Amazon S3 的請求速率
根據預設,S3 儲存貯體的每個分區前綴每秒可支援數千個請求。如果用戶端收到 Amazon S3 傳回的 HTTP 5xx 錯誤回應,表示已超過每個前綴支援的請求速率。若要對 5xx 錯誤進行疑難排解,請參閱如何針對 Amazon S3 的 HTTP 500 或 503 錯誤進行疑難排解?
若要加快 AWS 全球分散式 CloudFront 邊緣節點的傳輸時間,請使用 Amazon S3 Transfer Acceleration。
若要改善網路組態並提升傳輸效能,請使用 AWS Direct Connect。如需更多資訊,請參閱提升 AWS 與混合式網路的效能。
如需可提升效能的設計模式,請參閱 Amazon S3 效能設計模式。您可以使用 AWS DataSync、AWS Snowball 及 AWS Transfer Family,將大型資料集遷移至 Amazon S3。或者,您可以使用 AWS SDK 和 AWS Command Line Interface (AWS CLI),建立高效率的平行與批次傳輸程序。若要使用分段上傳功能傳輸大型檔案,請參閱使用 AWS CLI 將大型檔案上傳至 Amazon S3 時,如何最佳化效能?
檢閱用於判斷周轉時間的 Amazon S3 伺服器存取日誌
若要檢閱 Turn-Around Time 指標,請開啟 Amazon S3 伺服器存取記錄。如需 Turn-Around Time 指標的更多資訊,請參閱 Amazon S3 伺服器存取日誌格式中的 Turn-Around Time。使用 Turn-Around Time 指標判斷作業所需的時間。接著,您可以評估 Amazon S3 外部可能在上傳期間造成下載速度緩慢的其他延遲因素。
如果延遲高於預期,最佳實務是重試請求,不要等待該請求完成。如需更多資訊,請參閱 Amazon S3 效能準則。
檢查檔案傳輸活動
使用 TotalRequestLatency 指標追蹤每個請求經過的時間。此時間從 S3 儲存貯體收到第一個位元組開始計算,直到本機用戶端將最後一個位元組傳送至該儲存貯體為止。若要判斷潛在的效能問題,請檢查 GetRequests 和 PutRequests 指標,以及 4xx 與 5xx 狀態碼。
注意: GetRequests 和 PutRequests 指標的 AWS 計費費率與 Amazon CloudWatch 自訂指標相同。
相關資訊
CloudWatch 中的 Amazon S3 請求指標
如何使用 AWS CLI sync 命令來提高 Amazon S3 的資料傳輸效能?