2016-04-15 294 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