在向 Amazon S3 上传大文件时,如何优化性能?

上次更新时间:2019 年 12 月 17 日

我想向 Amazon Simple Storage Service (Amazon S3) 上传大文件。如何优化这种上传的性能? 

简短描述

当您向 Amazon S3 上传大文件时,最好利用分段上传。如果您使用的是 AWS 命令行界面 (AWS CLI),则当对象为大型对象时,所有高级 aws s3 命令会自动执行分段上传。这些高级命令包括 aws s3 cpaws s3 sync

要提高上传性能和优化分段上传,请考虑以下选项:

  • 如果您使用的是 AWS CLI,请自定义上传配置。
  • 启用 Amazon S3 Transfer Acceleration。

解决方法

如果您使用的是 AWS CLI,请自定义上传配置

您可以为 Amazon S3 自定义以下 AWS CLI 配置

  • max_concurrent_requests:此值用于设置一次可以发送至 Amazon S3 的请求数量。默认值为 10。
    注意:运行的线程越多,消耗的计算机资源也越多。您必须确保您的计算机拥有足够的资源来支持您想要的最大并发请求数。
  • max_queue_size:此值用于设置队列中的最大任务数量。
  • multipart_threshold:此值用于为单个文件的分段上传设置大小阈值。
  • multipart_chunksize:此值用于设置 AWS CLI 在单个文件的分段上传中上传的每个部分的大小。通过此设置,您可以将较大的文件(例如 300MB)分解为较小的部分,以加快上传速度。
    注意:分段上传要求单个文件上传时所分的不同部分不超过 10000 个。您必须确保您所设置的区块大小平衡了各部分文件大小和部分数量。
  • max_bandwidth:此值用于设置将数据上传到 Amazon S3 的最大带宽。

启用 Amazon S3 Transfer Acceleration

Amazon S3 Transfer Acceleration 可以在您的客户端与 Amazon S3 之间提供快速、安全的远距离传输。Transfer Acceleration 使用 Amazon CloudFront 遍布全球的边缘站点。

Transfer Acceleration 会产生额外费用,因此请务必查看定价。要确定 Transfer Acceleration 是否会提高您的使用案例的传输速度,请查看 Amazon S3 Transfer Acceleration 速度比较工具。

注意:Transfer Acceleration 不支持使用 CopyObject 执行跨区域复制。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?