全部產品
Search
文件中心

Object Storage Service:出錯處理

更新時間:Oct 19, 2018

異常處理

使用OSS C SDK時如果請求出錯,會有相應的錯誤資訊在aos_status_s中輸出。aos_status_s有以下幾個屬性:

  • code: 出錯請求的HTTP狀態碼,整形類型。
  • error_code: OSS的錯誤碼,字元串類型。
  • error_msg: OSS的錯誤資訊,字元串類型。
  • req_id: 標識該次請求的UUID;當您無法解決問題時,可以憑這個req_id來請求OSS開發工程師的幫助,字元串類型。

逾時處理

如何判斷逾時

  • 如果返回的aos_status_t中的code為5XX,表示伺服器內部錯誤,可以重試。
  • 如果返回的aos_status_t中的code不等於2XX,且error_code為-992或者-995時,表示連結逾時或請求逾時,可以重試。
  • 可以使用aos_status.h中的aos_should_retry(aos_status_t *)判斷返回的錯誤碼是否需要重試,如果返回1,表示需要重試。

如何設定逾時時間

  • 設定連結逾時:options->ctl->options->connect_timeout,單位秒,預設是10秒。
  • 設定DNS逾時:options->ctl->options->dns_cache_timeout,單位秒,預設是60秒。
  • 佈建要求逾時:
    • 通過設定options->ctl->options->speed_limit的值控制能容忍的最小速率,預設是1024,即1K。
    • 通過設定options->ctl->options->speed_time的值控制能容忍的最長時間,預設是15秒。
    • 如果使用了上述預設值,表示如果連續15秒的傳輸速率小於1K,則逾時。

常見錯誤碼

錯誤碼 描述
AccessDenied 拒絕訪問
BucketAlreadyExists Bucket已經存在
BucketNotEmpty Bucket不為空
EntityTooLarge 實體過大
EntityTooSmall 實體過小
FileGroupTooLarge 檔案組過大
FilePartNotExist 檔案Part不存在
FilePartStale 檔案Part過時
InvalidArgument 參數格式錯誤
InvalidAccessKeyId AccessKeyId不存在
InvalidBucketName 無效的Bucket名字
InvalidDigest 無效的摘要
InvalidObjectName 無效的Object名字
InvalidPart 無效的Part
InvalidPartOrder 無效的part順序
InvalidTargetBucketForLogging Logging操作中有無效的目標bucket
InternalError OSS內部發生錯誤
MalformedXML XML格式非法
MethodNotAllowed 不支援的方法
MissingArgument 缺少參數
MissingContentLength 缺少內容長度
NoSuchBucket Bucket不存在
NoSuchKey 檔案不存在
NoSuchUpload Multipart Upload ID不存在
NotImplemented 無法處理的方法
PreconditionFailed 預先處理錯誤
RequestTimeTooSkewed 發起請求的時間和伺服器時間超出15分鐘
RequestTimeout 請求逾時
SignatureDoesNotMatch 簽名錯誤
TooManyBuckets 使用者的Bucket數目超過限制