本文介紹OSS上傳和下載檔案速度慢的原因和解決方案。
問題原因
OSS上傳和下載速度主要受限於用戶端本地的頻寬以及電訊廠商的網路鏈路。
解決方案
使用非SDK上傳和下載檔案速度慢的排查方法
檢查上傳和下載檔案的方式。
檢查使用頻寬是否超出限制。
檢查本網環境,使用MTR工具測試一下Bucket網域名稱,查看用戶端和伺服器之間的鏈路是否有丟包情況。更多資訊,請參見使用MTR工具進行網路鏈路分析。
說明如果您是內網上傳,請使用內網internal類型的Endpoint地址。
使用ossutil工具的probe命令檢測您的網路環境和上傳速度,排查與OSS之間的網路狀態。更多資訊,請參見probe。
確認上傳的用戶端裝置與OSS所屬的地區是否涉及遠距離傳輸。
例如OSS的Bucket在華東1(杭州),用戶端所在地區為中國香港,這類情境用戶端在上傳時會受到網路鏈路的限制,您可以開通OSS傳輸加速。
OSS傳輸加速利用全球分布的雲機房,將全球各地使用者對您Bucket的訪問,經過智能路由解析至就近的存取點,使用最佳化後的網路及協議,為雲端儲存互連網的上傳、下載提供端到端的加速方案。更多資訊,請參見開啟傳輸加速。
說明開啟傳輸加速後,會在30分鐘內全網生效。請確保配置的傳輸加速Endpoint地址正確。
Global AccelerationEndpoint:地址為
oss-accelerate.aliyuncs.com。傳輸加速存取點分布在全球各地,全球各地的Bucket均可以使用該網域名稱進行傳輸加速。非中國內地加速Endpoint:地址為
oss-accelerate-overseas.aliyuncs.com。傳輸加速存取點分布在除中國內地以外的各地區,僅在中國香港及海外各地區Bucket綁定未備案的網域名稱做CNAME指向時使用。
使用SDK上傳和下載檔案速度慢的排查方法
以通過OSS Python SDK上傳檔案速度較慢的排查方法為例:
如果您是上傳大於100 MB的檔案,建議您採用斷點續傳方式上傳。更多資訊,請參見分區上傳和斷點續傳。如果您已採用斷點續傳方式上傳,請繼續執行下一步。
使用斷點續傳時,請檢查以下參數的設定,單位為Byte。
multipart_threshold:檔案長度大於該值時,採用分區上傳。
part_size:分區大小。您需要根據檔案大小設定分區大小,例如1 GB以上的檔案建議將part_size設定100 MB。
說明網路情況較好時,建議增加分區大小。反之,減小分區大小。
num_threads為並發上傳的線程數,通常num_threads設定為4。
結合以上說明,建議配置如下:
multipart_threshold=100*1024*1024, part_size=100*1024*1024, num_threads=4檢查是否開啟了CRC驗證。
如果為開啟狀態,建議在初始化ossclient時關閉CRC校正,可以在要求標頭中增加Content-MD5的方式使用MD5替換crc64。關於初始化Python SDK的更多資訊,請參見Python SDK初始化。
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請先配置環境變數。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。 endpoint = 'yourEndpoint' # 填寫Bucket名稱,例如examplebucket。 # enable_crc=False表示關閉crc64校正。 bucket = oss2.Bucket(auth, endpoint, 'examplebucket',enable_crc=False)說明crc64僅用於校正資料,不保證資料安全性。