如何改善 Amazon S3 同步命令的傳輸效能?

1 分的閱讀內容
0

我使用 AWS Command Line Interface (AWS CLI) 同步命令在 Amazon Simple Storage Service (Amazon S3) 上傳輸資料。但是,傳輸需要很長時間才能完成。

解決方案

sync 命令會比較來源儲存貯體和目標儲存貯體,以判斷哪些來源檔案不存在於目標儲存貯體中。sync 命令還會判斷與目標儲存貯體中的檔案相比修改了哪些來源檔案。接著,它會將新的或更新的來源檔案複製到目的地儲存貯體。

來源儲存貯體和目標儲存貯體中的物件數量可能會影響 sync 命令完成程序所需的時間。傳輸大小可能會影響同步的持續時間或您從 Amazon S3 請求產生的成本

刪除標記也會影響清單效能,所以最佳實務是將刪除標記的數量降至最低。因為 sync 命令會在後端執行 List API 呼叫,刪除標記也會影響 sync 命令的效能。

若要在執行 sync 命令時改善傳輸時間,請實作下列實務。

執行 AWS CLI 的多個執行個體

若要複製大量資料,請執行 AWS CLI 的多個執行個體,以平行執行個別的同步操作。例如,您可以針對不同的字首執行平行同步作業:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI

或者,針對個別排除和包括篩選條件執行平行同步作業。例如,下列作業會依照以數字 0 到 4 開頭的索引鍵名稱,以及數字 5 到 9 的索引鍵名稱來分隔要同步的檔案:

注意:即使您使用排除包括篩選條件,sync 命令仍會審核來源儲存貯體中的所有檔案。此審核有助於識別要將哪些來源檔案複製到目的地儲存貯體。如果您有多個針對不同索引鍵名稱字首的同步作業,則每個 sync 作業都會審核所有來源檔案。但是,由於排除包括篩選條件,只有包括在篩選條件中的檔案才會複製到目的地儲存貯體。

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

如需最佳化工作負載效能的詳細資訊,請參閱最佳實務設計模式:最佳化 Amazon S3 效能

修改 max_concurrent_requests 的 AWS CLI 組態值

若要盡可能改善效能,請修改 max_concurrent_requests 的值。此值可設定一次可傳送至 Amazon S3 的請求數量。預設值為 10,不過您可以將其增加到更高的值。但是,請注意下列限制:

  • 執行更多執行緒會消耗更多電腦資源。您必須確定您的電腦有足夠的資源來支援您想要的最大並行請求數目。
  • 過多的並行請求可能會使系統不堪負荷。並且導致連線逾時或降低系統回應速度。若要避免 AWS CLI 發生逾時問題,請將 --cli-read-timeout 值或 --cli-connect-timeout 值設為 0。

(選擇性) 檢查執行個體組態

如果您使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體執行同步作業,請使用下列最佳實務:

  • 檢閱您的執行個體類型。較大的執行個體類型可以提供更好的結果,因為它們具有高頻寬和 Amazon Elastic Block Store (Amazon EBS) 最佳化的網路。
  • 如果執行個體位於與儲存貯體不同的 AWS 區域,請使用相同區域中的執行個體。若要減少延遲,請縮短執行個體與 Amazon S3 儲存貯體之間的地理距離。
  • 如果執行個體與來源儲存貯體位於相同的區域,請為 S3 設定 Amazon Virtual Private Cloud (Amazon VPC) 端點。VPC 端點可協助改善整體效能。

相關資訊

如何提高在 S3 儲存貯體和 EC2 執行個體之間複製資料的傳輸速率?

將大量資料從一個 Amazon S3 儲存貯體傳輸到另一個儲存貯體的最佳方式是什麼?

AWS 官方
AWS 官方已更新 8 個月前