全部產品
Search
文件中心

Tablestore:使用Table Store過程中返回503錯誤碼

更新時間:Jul 24, 2024

問題描述

在使用Table Store的過程中,偶爾會出現503錯誤,詳細錯誤資訊請參見下表。

HTTPStatus

ErrorCode

ErrorMsg

503

OTSPartitionUnavailable

The partition is not available.

503

OTSServerUnavailable

Server is not available.

503

OTSServerBusy

Server is busy.

503

OTSTimeout

Operation timeout.

問題原因

Table Store使用的是共用儲存的機制,以資料分區為邏輯單位,因此在負載平衡的過程中不會有實際資料的遷移,只是資料表元資訊的變更。

在元資訊變更的過程中,為了保證資料的一致性,涉及到的資料分區會有短暫的不可用時間,正常情況下影響時間為百毫秒層級,在資料分區負載較大時可能會持續到秒層級,在這段時間內對該分區的讀寫操作有可能會出現上述的503錯誤。

解決方案

一般重試即可解決。

在Table StoreSDK中預設提供了一些重試策略,在初始化Client時可以指定重試策略。更多資訊,請參見初始化Client。同時,Table Store提供了標準Restful API協議,由於網路環境的不可控,所有的讀寫操作均建議增加重試策略,能夠對網路錯誤等有一定的容錯能力。

重要

批量讀寫操作BatchWriteRowBatchGetRow讀寫的資料可能屬於多張表或者一張表的多個資料分區,有可能某一個分區正在分裂,所以整個操作是非原子性的,只能夠保證每個單行操作的原子性,該操作返回碼為200時,仍然需要檢查response中的getFailedRows()是否有失敗的單行操作。