2016-04-15 5 views
0

Я новичок в использовании клиента aws s3. Я попытался использовать команду «aws s3 cp» для загрузки пакета файлов из s3 в локальную файловую систему, это довольно быстро. Но затем я попытался только прочитать все содержимое партии файлов в одном поточном цикле, используя API-интерфейс amazon java sdk, это удивительно в несколько раз медленнее, чем данная команда «aws s3 cp»: <aws s3> команда aws s3 cp, реализованная с помощью multithreads?

Любой знаете, в чем причина? Я не сомневался, что «AWS s3 ф» многопоточная

ответ

2

Если вы смотрели на источник transferconfig.py, это указывает на то, что значения по умолчанию:

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

, что означает, что он может делать 10 запросов на в то же время, и что он также куски переводов на 8 Мб штук, когда файл больше 8 МБ

Это also documented on the s3 cli config документации.

Эти значения конфигурации можно установить для 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

Смежные вопросы