【问题标题】:aws s3 > is "aws s3 cp" command implemented with multithreads?aws s3 > 是用多线程实现的“aws s3 cp”命令吗?
【发布时间】:2016-04-15 21:12:55
【问题描述】:

我是使用 aws s3 客户端的新手。我尝试使用“aws s3 cp”命令将批量文件从 s3 下载到本地文件系统,速度非常快。但我随后尝试使用 amazon java sdk API 在单线程循环中仅读取这批文件的所有内容,令人惊讶的是,它比给定的“aws s3 cp”命令慢了好几倍:

有人知道是什么原因吗?我怀疑“aws s3 cp”是多线程的

【问题讨论】:

    标签: aws-sdk aws-cli


    【解决方案1】:

    如果您查看transferconfig.py的来源,则表明默认为:

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

    这意味着它可以同时进行 10 个请求,并且当文件大于 8MB 时,它还会将传输分成 8MB 块

    这是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 性能会很糟糕。

    【讨论】:

    • 还要提到“aws s3 sync”命令,它在处理大量文件/目录时很有用
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多