All Products
Search
Document Center

Object Storage Service:What do I do if the speed is slow when I upload objects to or download objects from OSS?

Last Updated:Aug 25, 2026

This topic describes the causes of slow object upload and download speeds in Object Storage Service (OSS) and provides solutions.

Causes

Upload and download speeds are limited by client bandwidth and ISP network links.

Solutions

Troubleshoot without OSS SDKs

  1. Check the upload or download method.

    • If uploads or downloads are slow in the OSS console or with tools like ossfs, ossbrowser, or ossftp, use ossutil instead. ossutil handles large or numerous objects more efficiently. For more information, see cp (upload files) and cp (Download objects).

    • If ossutil does not improve the speed, proceed to the next step.

  2. Check whether bandwidth or QPS exceeds the limit.

    1. Log on to the OSS console.

    2. In the left-side navigation pane, click Buckets, and then click the target bucket.

    3. In the left-side navigation pane, choose Data Usage > Basic Data to check whether bandwidth or QPS exceeds the limit.

      • Default bandwidth limit: 10 Gbit/s in the Chinese mainland, 5 Gbit/s in other regions. Requests are throttled when the limit is exceeded.

      • Default QPS limit: 10,000. Excess requests are denied.

  3. Test the bucket endpoint for packet loss between client and server. Use the MTR tool.

    Note

    If you upload objects over an internal network, use an internal endpoint.

  4. Run the ossutil probe command to test network connectivity and upload speed. For more information, see probe.

  5. Check for long-distance network connections between the client and the bucket.

    For example, if the bucket is in the China (Hangzhou) region and the client is in China (Hong Kong), network link limitations may slow transfers. Enable transfer acceleration to resolve this.

    Transfer acceleration uses globally distributed data centers to accelerate transfers. When a request is sent, it is routed to the data center where the bucket is located over the optimal network path and protocol, providing end-to-end acceleration for Internet-based OSS access. For more information, see Access OSS using transfer acceleration.

    Note

    Transfer acceleration takes effect within 30 minutes. Ensure the acceleration endpoint is correctly configured.

    • Global acceleration endpoint: oss-accelerate.aliyuncs.com. Accelerates data transfer for buckets in all regions.

    • Acceleration endpoint outside the Chinese mainland: oss-accelerate-overseas.aliyuncs.com. Use this endpoint to map a custom domain name without ICP filing to a bucket in China (Hong Kong) or other regions outside the Chinese mainland.

Troubleshoot with OSS SDKs

The following example uses OSS SDK for Python to troubleshoot slow uploads:

  1. Check the upload method. For objects larger than 100 MB, use resumable upload. For more information, see Multipart upload. If you already use resumable upload, proceed to the next step.

    If you use resumable upload, check the following parameters:

    • multipart_threshold: Object size threshold for multipart upload. Unit: bytes.

    • part_size: Size of each part. Unit: bytes. Set based on object size. For objects larger than 1 GB, set to 100 MB.

      Note

      Increase part size for stable connections. Decrease it for unstable connections.

    • num_threads: Number of concurrent upload threads. Typically set to 4.

    Recommended configurations:

    multipart_threshold=100*1024*1024,
    part_size=100*1024*1024,
    num_threads=4
  2. Check whether CRC-64 is enabled.

    If CRC-64 is enabled, disable it during OSSClient initialization. Use MD5 instead by adding the Content-MD5 request header. For more information about how to initialize OSS SDK for Python, see Initialization.

    # -*- coding: utf-8 -*-
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured. 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    
    # Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
    endpoint = 'yourEndpoint'
    # Specify the name of the bucket. Example: examplebucket. 
    # enable_crc=False specifies that CRC-64 is disabled. 
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket',enable_crc=False)  
    Note

    CRC-64 verifies data integrity only and does not ensure data security.