阿里云对象存储OSS上传或下载文件时速度很慢

问题描述

阿里云对象存储OSS支持通过以下操作方式上传和下载文件,在向OSS中上传文件或从OSS中下载文件时,速度较慢。

  • 通过控制台方式
  • OSS SDK方式
  • ossftp工具
  • ossfs工具
  • 图形化管理ossbrowser
  • 命令行工具ossutil
  • 数据迁移工具ossimport

问题原因

OSS上传和下载速度主要受限于客户端本地的带宽以及运营商的网络链路。

解决方案

当您在上传文件到OSS或下载文件到OSS慢时,请参见以下操作,进行排查:

上传或下载文件速度慢的通用排查方法

如果您是通过控制台或者使用ossfs、ossbrowser、ossftp等工具上传或下载文件较慢,建议您使用ossutil工具,使用ossutil工具更高效,且支持上传大流量文件或者是数量较多的文件,详情请参见ossutil的下载与安装。如果上传或下载文件还是速度很慢,请参见以下操作进行排查解决:

  1. 登录OSS管理控制台单击Bucket列表,之后单击目标Bucket名称,选择用量查询>基础数据检查网络的带宽和QPS是否超限,详情请参见OSS中Bucket出现带宽或QPS超限的排查方法
    • 带宽:中国内地各地域10Gbit/s、其他地域5Gbit/s。如达到该阈值,请求会被流控。
    • QPS:10000次/s。如达到该阈值,超出的请求会被拒绝。
  2. 请检查本地网络环境,使用MTR工具测试一下Bucket域名,查看客户端和服务器之间的链路是否有丢包情况,详情请参见MTR工具使用说明与结果分析
    说明:如果您是内网上传,请使用内网internal类型的Endpoint地址。
  3. 请使用ossutil工具的probe命令检测下您的网络环境和上传速度,排查与OSS之间的网络状态,详情请参见probe
  4. 请确认上传的客户端设备与OSS所属的区域是否涉及跨境传输。例如OSS的Bucket在杭州,客户端在香港,这类场景客户端在上传的时候会受到跨境链路的限制,您可开通过OSS的传输加速。OSS传输加速利用全球分布的云机房,将全球各地用户对您存储空间(Bucket)的访问,经过智能路由解析至就近的接入点,使用优化后的网络及协议,为云存储互联网的上传、下载提供端到端的加速方案,详情请参见开启传输加速
    说明:开启传输加速后,会在30分钟内全网生效。请确保配置的传输加速Endpoint地址正确。
    • 全球加速Endpoint:地址为oss-accelerate.aliyuncs.com。传输加速接入点分布在全球各地,全球各地的Bucket均可以使用该域名进行传输加速。
    • 非中国内地加速Endpoint:地址为oss-accelerate-overseas.aliyuncs.com。传输加速接入点分布在除中国内地以外的各地域,仅在中国香港及海外各地域Bucket绑定未备案的域名做CNAME指向时使用。

使用OSS SDK上传文件速度慢的排查方法

以下操作以Python SDK为例,在使用OSS SDK上传文件速度慢时,请参见以下操作进行排查:

  1. 如果您是上传大于100M的文件,建议您采用断点续传方式上传,详情请参见分片上传和断点续传。如果您已采用断点续传方式上传,请继续执行下一步。
  2. 检查是否开启了CRC验证,如果为开启状态,建议在初始化ossclient时关闭CRC校验,可以在请求头中增加Content-MD5的方式用MD5替换crc64。如何初始化Python SDK,详情请参见Python SDK初始化
    说明
    • enable_crc=False表示CRC验证为关闭状态。
    • crc64不是保证数据安全,而是用于校验,crc64校验性能很慢,如果不关闭会影响速度。
    # -*- coding: utf-8 -*-
    import oss2
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    endpoint = 'yourEndpoint'
    # 填写Bucket名称。
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket',enable_crc=False)  
  3. 断点续传有以下3个重要参数,请检查以下参数的设置:
    • multipart_threshold表示文件长度大于该值时则用分片上传。
    • part_size为分片的大小,分片大小根据文件大小设置,如果1GB以上文件建议设置100MB,CPU切片时比较频繁,而且过小的切片网络利用率也不高。调整后参数如下:
      说明:网络情况较好时,建议增加分片大小。反之,减小分片大小。
      multipart_threshold=10000*1024,
      part_size=10000*1024,
      num_threads=4
    • num_threads为并发上传的线程数,一般num_threads设置为4即可。

适用于

  • 对象存储OSS
阿里云首页 对象存储 OSS 相关技术圈