Amazon QLDB 驅動程序的常見錯誤 - Amazon Quantum Ledger 資料庫 (Amazon QLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon QLDB 驅動程序的常見錯誤

重要

支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL

本節說明與工作階段互QLDB動時,Amazon 驅動程式可能擲回的執行QLDB階段錯誤API。

以下是由驅動程序返回的常見異常的列表。每個例外都包含特定的錯誤訊息,後面接著簡短的描述和可能解決方案的建議。

CapacityExceededException

訊息:容量超過

Amazon QLDB 拒絕了該請求,因為它超出了分類帳的處理能力。QLDB針對每個分類帳強制執行內部調整規模限制,以維持服務的健全狀況和效能。此限制會根據每個個別要求的工作負載大小而有所不同。例如,如果要求執行效率低下的資料交易 (例如,非索引限定查詢所產生的資料表掃描),工作負載可能會增加。

我們建議您等待,然後再重試請求。如果您的應用模組持續遇到此例外,請最佳化對帳單,並降低傳送至分類帳之請求的匯率與數量。陳述式最佳化的範例包括每個交易執行較少的陳述式以及調整資料表索引。若要瞭解如何最佳化陳述式並避免表格掃描,請參閱最佳化查詢效能

我們也建議您使用最新版本的QLDB驅動程式。驅動程式具有預設的重試原則,該原則會使用指數輪詢和抖動來自動重試例外狀況 (例如此類)。指數輪詢的概念是在連續錯誤響應的重試之間使用逐漸更長的等待時間。

InvalidSessionException

訊息:交易 transactionId 已過期

交易超過其最大生命週期。在認可之前,交易最多可以執行 30 秒。在此逾時限制之後,對交易完成的任何工作都會遭到拒絕,並QLDB捨棄工作階段。此限制可透過啟動交易而不提交或取消工作階段來保護用戶端不會洩漏工作階段。

如果這是應用程式中常見的例外狀況,則可能是交易執行時間太長。如果交易執行階段的時間超過 30 秒,請最佳化陳述式以加速交易。陳述式最佳化的範例包括每個交易執行較少的陳述式以及調整資料表索引。如需詳細資訊,請參閱 最佳化查詢效能

InvalidSessionException

訊息:工作階段 sessionId 已過期

QLDB捨棄工作階段,因為它超出了其最大總存留期。QLDB無論作用中交易為何,都會在 13-17 分鐘後捨棄工作階段。工作階段可能會因為多種原因而遺失或受損,例如硬體故障、網路故障或應用程式重新啟動。因此,在工作階段上QLDB強制執行最長存留期,以確保用戶端軟體能夠抵禦工作階段失敗。

如果您遇到此例外狀況,建議您取得新的階段作業,然後重試該交易。我們也建議您使用最新版本的驅動程式,該QLDB驅動程式會代表應用程式管理工作階段集區及其健全狀況。

InvalidSessionException

訊息:沒有此類工作階段

客戶端嘗試QLDB使用不存在的會話進行交易。假設用戶端使用先前存在的工作階段,工作階段可能因為下列其中一種情況而不再存在:

  • 如果工作階段涉及內部伺服器故障 (也就是HTTP回應碼為 500 的錯誤),QLDB可能會選擇完全捨棄工作階段,而不是允許客戶在不確定狀態的工作階段進行交易。然後,該會話上的任何重試嘗試都會失敗並顯示此錯誤。

  • 過期的工作階段最終會被遺忘QLDB。然後,任何嘗試繼續使用會話都會導致此錯誤,而不是初始錯誤InvalidSessionException

如果您遇到此例外狀況,建議您取得新的階段作業,然後重試該交易。我們也建議您使用最新版本的驅動程式,該QLDB驅動程式會代表應用程式管理工作階段集區及其健全狀況。

RateExceededException

訊息:超過比率

QLDB根據呼叫者的身份限制客戶端。QLDB使用權杖儲存貯體節流演算法針對每個區域、每個帳戶強制執行節流。QLDB這樣做是為了幫助服務的性能,並確保所有QLDB客戶的公平使用。例如,嘗試使用該作業取得大量並行工StartSessionRequest作階段可能會導致節流。

若要維持應用程式健康狀態並減輕進一步的節流,您可以使用指數輪詢和抖動在此例外狀況上重試。指數輪詢的概念是在連續錯誤響應的重試之間使用逐漸更長的等待時間。我們建議使用最新版本的QLDB驅動程式。驅動程式具有預設的重試原則,該原則會使用指數輪詢和抖動來自動重試例外狀況 (例如此類)。

如果您的應用程序始終受到調用限制,則最新版本的QLDB驅動程序也可以提QLDB供StartSessionRequest幫助。驅動程式會維護跨交易重複使用的工作階段集區,這有助於減少應用程式進行的StartSessionRequest呼叫次數。若要要求提高API節流限制,請聯絡中AWS Support 心。

LimitExceededException

訊息:超過工作階段限制

分類帳超過其作用中工作階段數目的配額 (也稱為制)。此配額定義於中Amazon 的配額和限制 QLDB。分類帳的有效階段作業計數最終是一致的,且持續在配額附近執行的分類帳可能會定期看到此例外。

為了維持應用程式的健康狀態,我們建議您重試此例外狀況。若要避免此例外狀況,請確定您尚未針對所有用戶端的單一分類帳設定超過 1,500 個並行階段作業。例如,您可以使用 Java 的 Amazon QLDB 驅動程式maxConcurrentTransactions方法來設定驅動程式執行個體中可用工作階段的數目上限。

QldbClientException

訊息:只有在上階交易開啟時,串流的結果才有效

交易已關閉,無法用於從中擷取結果QLDB。交易在提交或取消時關閉。

當用戶端直接使用Transaction物件,並嘗試在提交或取消交易QLDB之後擷取結果時,就會發生此例外狀況。為了緩解此問題,客戶端必須在關閉交易之前讀取數據。