我是使用aws s3客户端的新手。我试图用“aws s3 cp”命令从s3下载一批文件到本地文件系统,速度非常快。但是我然后试着只使用amazon java sdk API读取单个线程循环中的所有文件内容,令人惊讶的是比给定的“aws s3 cp”命令慢几倍:<aws s3>是使用多线程实现的“aws s3 cp”命令吗?
任何人知道是什么原因?我怀疑,“AWS S3 CP”是多线程
我是使用aws s3客户端的新手。我试图用“aws s3 cp”命令从s3下载一批文件到本地文件系统,速度非常快。但是我然后试着只使用amazon java sdk API读取单个线程循环中的所有文件内容,令人惊讶的是比给定的“aws s3 cp”命令慢几倍:<aws s3>是使用多线程实现的“aws s3 cp”命令吗?
任何人知道是什么原因?我怀疑,“AWS S3 CP”是多线程
如果你看的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性能会很惨。
还提到“aws s3 sync”命令,这对于处理大量文件/目录时可能很有用 – Tom