The data transmission service is MaxCompute's primary data movement layer, built on the Tunnel service. It supports two modes: a regular tunnel for batch uploads and downloads, and a stream tunnel for continuous low-latency writes. Shared resource groups are available at no cost within the allocated quota; exclusive resource groups are available for purchase for predictable, high-throughput workloads.

Choose a tunnel mode
| Scenario | Recommended mode |
|---|---|
| Bulk load or export of offline data (tables, partitions, query results) | Regular tunnel |
| Continuous, low-latency writes from event streams or pipelines | Stream tunnel |
| Upsert operations on Delta Tables | Regular tunnel (UpsertSession) |
| Running data transfer commands from the MaxCompute client | Regular tunnel |
How it works
Regular tunnel — Uses an UploadSession or DownloadSession to move data in blocks. Each session has a lifecycle of up to 24 hours. Concurrent writes are ACID-compliant (atomicity, consistency, isolation, and durability). For Delta Table upserts, use a UpsertSession instead of a standard UploadSession.
Stream tunnel — Writes data in micro-batches to table partitions. Each flush operation occupies one slot. Use this mode when your pipeline produces data continuously and you need it available in MaxCompute with minimal delay.
Limitations
Regular tunnel — uploads
| Item | Limit |
|---|---|
| UploadSession lifecycle | 24 hours |
| Blocks per UploadSession | 20,000 |
| Block write speed | 10 MB/s |
| Block size | 100 GB |
| UploadSessions created per table | 500 per 5 minutes |
| Blocks written to a table | 500 per 5 minutes |
| Concurrent UploadSessions per table | 32 |
| Single-table write commits | 75 per 15 seconds |
| Concurrent block writes | Subject to available slot count |
| Concurrent write consistency | ACID-guaranteed |
When the concurrent UploadSession limit (32) or the write commit rate (75 per 15 seconds) is exceeded, requests return an error. Design your upload clients to respect exponential backoff; see Retry policy.
STRING field size limit: 8 MB per field. For all other types, see Data type editions. During upload, multiple records are packaged into a single package file.
Delta Table upsert limits:
| Item | Limit |
|---|---|
| UpsertSession lifecycle | 24 hours |
| Max write speed | Number of tables or partition buckets × 10 MB/s |
| Max slots | Number of tables or partition buckets |
| Commit frequency | 1 commit per minute per partition |
If two commits occur within the same minute, the service returns ErrorCode=FlowExceeded, ErrorMessage=CommitUpsert QPS Quota exceeded.
Regular tunnel — downloads
| Item | Limit |
|---|---|
| DownloadSession lifecycle | 24 hours |
| InstanceDownloadSession lifecycle | 24 hours (bounded by instance lifecycle) |
| InstanceDownloadSessions per project | 200 per 5 minutes |
| DownloadSessions per table | 200 per 5 minutes |
| Single download request speed | 10 MB/s |
| Concurrent DownloadSessions | Subject to available slot count |
| Concurrent InstanceDownloadSessions | Subject to available slot count |
| Concurrent download requests | Subject to available slot count |
Stream tunnel
| Item | Limit |
|---|---|
| Write speed per slot | 10 MB/s |
| Concurrent partitions per table | 64 |
| Max slots per partition | 32 |
| Flush concurrency | Each flush occupies one slot |
Network limits for exclusive resource groups
Only virtual private cloud (VPC) access is supported; Internet access is not.
Data transmission is supported within the same region only; cross-region transmission is not supported.
Network bandwidth directly affects upload and download speed. Typical throughput is 1–20 MB/s. For slow uploads, switch to multi-threaded uploads.
Shared resource groups
The following table lists the maximum number of shared slots available per project in each region. Shared resource groups are free of charge.
| Site | Region | Slots |
|---|---|---|
| China | China (Hangzhou) | 300 |
| China | China East 1 Finance | 50 |
| China | China (Shanghai) | 600 |
| China | China East 2 Finance | 50 |
| China | China (Beijing) | 300 |
| China | China North 2 Ali Gov | 100 |
| China | China (Zhangjiakou) | 300 |
| China | China (Ulanqab) | 300 |
| China | China (Shenzhen) | 150 |
| China | China South 1 Finance | 50 |
| China | China (Chengdu) | 150 |
| China | China (Hong Kong) | 50 |
| Asia Pacific | Singapore | 100 |
| Asia Pacific | Malaysia (Kuala Lumpur) | 50 |
| Asia Pacific | Indonesia (Jakarta) | 50 |
| Asia Pacific | Japan (Tokyo) | 50 |
| Europe and Americas | Germany (Frankfurt) | 50 |
| Europe and Americas | US (Silicon Valley) | 100 |
| Europe and Americas | US (Virginia) | 50 |
| Europe and Americas | UK (London) | 50 |
| Middle East and India | UAE (Dubai) | 50 |
HTTP status codes
The Tunnel service uses standard HTTP status codes. The following codes are valid responses:
| Status code | Name |
|---|---|
| 200 | HTTP_OK |
| 201 | HTTP_CREATED |
| 400 | HTTP_BAD_REQUEST |
| 401 | HTTP_UNAUTHORIZED |
| 403 | HTTP_FORBIDDEN |
| 404 | HTTP_NOT_FOUND |
| 405 | HTTP_METHOD_NOT_ALLOWED |
| 409 | HTTP_CONFLICT |
| 422 | HTTP_UNPROCESSABLE_ENTITY |
| 429 | HTTP_TOO_MANY_REQUESTS |
| 499 | HTTP_CLIENT_CLOSED_REQUEST |
| 500 | HTTP_INTERNAL_SERVER_ERROR |
| 502 | HTTP_BAD_GATEWAY |
| 503 | HTTP_SERVICE_UNAVAILABLE |
| 504 | HTTP_GATEWAY_TIME_OUT |
Retry policy
For failed requests, use exponential backoff before retrying. The minimum wait is 1 second, doubling with each consecutive failure up to a cap of 32 seconds: 1 s → 2 s → 4 s → 8 s → 16 s → 32 s → 32 s.
Request classifications
| Type | Definition | SLA coverage |
|---|---|---|
| Repeated request | Requests with the same URL, or consecutive requests from the same client IP address | — |
| Valid request | Status code is valid and request complies with the retry policy | Covered |
| Invalid request | Status code is valid but request does not comply with the retry policy | Not covered |
| Attack request | Status 429 or 503 returned, and the client does not comply with the retry policy | Not covered |
For attack requests, MaxCompute isolates the IP address, UID, and project of the offending client. Isolated clients cannot access MaxCompute as expected.
FAQ
Why is my upload or download speed slow?
The Tunnel service occasionally experiences latency spikes due to shared resource contention — a 10 MB transfer that normally takes seconds can extend to minutes. The most common causes are:
Shared resource exhaustion — CPU or network bandwidth in the shared tunnel pool is fully consumed. If this happens repeatedly, purchase an exclusive resource group.
Unstable Internet connection — Internet connectivity between your client and the Tunnel endpoint is unreliable. Switch to a VPC connection for a stable, predictable path.
Client resource exhaustion — Your local CPU or network bandwidth is saturated. Profile your client's resource usage and scale accordingly.
Long-connection code logic — Upload and download loops that hold connections open too long can degrade throughput. Review your client code to ensure connections are managed efficiently.