2016-04-15 293 views
0

我是使用aws s3客戶端的新手。我試圖用「aws s3 cp」命令從s3下載一批文件到本地文件系統,速度非常快。但是我然後試着只使用amazon java sdk API讀取單個線程循環中的所有文件內容,令人驚訝的是比給定的「aws s3 cp」命令慢幾倍:<aws s3>是使用多線程實現的「aws s3 cp」命令嗎?

任何人知道是什麼原因?我懷疑,「AWS S3 CP」是多線程

回答

2

如果你看的transferconfig.py源,則表明該設置是:

DEFAULTS = { 
    'multipart_threshold': 8 * (1024 ** 2), 
    'multipart_chunksize': 8 * (1024 ** 2), 
    'max_concurrent_requests': 10, 
    'max_queue_size': 1000, 
} 

,這意味着它可以做的10個請求同時,當文件大於8MB時,它也將塊傳輸爲8MB塊。

這是​​文檔。

這些配置值,可以爲S3設置:
max_concurrent_requests - 併發請求的最大數量。
max_queue_size - 任務隊列中的最大任務數。 multipart_threshold - CLI用於多個單個文件傳輸的大小閾值。
multipart_chunksize - 使用多部分傳輸時,這是CLI用於單個文件的多部分傳輸的塊大小。

你可以調下來,看它是否與您的簡單的方法進行比較:

aws configure set default.s3.max_concurrent_requests 1 

不要忘了調回來了之後,否則您的AWS性能會很慘。

+1

還提到「aws s3 sync」命令,這對於處理大量文件/目錄時可能很有用 – Tom