跳至內容

如何對從內部部署用戶端下載或上傳資料到 Amazon S3 時,發生的速度緩慢或不一致問題進行疑難排解?

2 分的閱讀內容
0

當我在 Amazon Simple Storage Service (Amazon S3) 和特定網路或內部部署用戶端之間下載或上傳資料時,遇到延遲的情況。

解決方法

縮短與提出請求之用戶端的距離

最佳實務是使用地理位置盡可能接近本機用戶端的 Amazon S3 儲存貯體。

若要測試用戶端與 S3 儲存貯體之間的地理距離會造成何種影響,請完成以下步驟:

  1. 在與儲存貯體相同的 AWS 區域中啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
  2. 在其他區域中啟動另一個執行個體。
  3. 使用這兩個執行個體上傳及下載相同檔案。
  4. 比較兩個區域之間的輸送量。

若要縮短本機用戶端與 S3 儲存貯體之間的距離,請採取以下其中一項措施:

  • 將資料移至較接近用戶端的區域內的儲存貯體。您可以設定跨區域複寫 (CRR),將來源儲存貯體中的資料複寫至新區域的目的地儲存貯體。
  • 將用戶端遷移至更接近 S3 儲存貯體的位置。
  • 使用 S3 多區域存取點 (MRAP) 提供單一全域端點,自動跨區域將請求路由至最近的 S3 儲存貯體。
  • 搭配支援 CRT 的 SDK 使用 AWS Common Runtime (CRT),例如 AWS CLI v2、Boto3 或 Java SDK 2.x。CRT 透過平行連線、智慧型重試邏輯及分段上傳處理,提升資料傳輸效能。

檢查本機用戶端的 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 的資料傳輸效能?

AWS 官方已更新 6 個月前