觀察速率限制事件

已完成

在此單元中,我們將討論識別速率限制事件的方法。

使用 Azure Cosmos DB for NoSQL 時,Azure Cosmos DB 可能會傳回 429狀態碼錯誤。 這個錯誤碼表示發生要求速率太大的例外狀況。 此例外狀況表示 Azure Cosmos DB 要求速率受到限制。

使用佈建輸送量時,會針對工作負載設定每秒要求單位 (RU/秒)。 作業 (讀取、寫入、查詢) 對照服務取用要求單位 (RU)。 如果在任何指定的秒內,作業取用比佈建 RU/秒更多的 RU,Azure Cosmos DB 即會傳回 429 例外狀況。

我們收到 429 例外狀況有三個主要原因:

  • 要求速率非常大。
  • 由於中繼資料要求速率很高,要求未完成。
  • 由於暫時性服務錯誤,要求未完成。

我們將探討上述每個原因,以及如何識別這些情況。

要求速率非常大

此例外狀況的三個原因中,這是最常見的原因。 當資料上的依作業的 RU 超過佈建的 RU/秒時,Azure Cosmos DB 會傳回此例外狀況。

若要調查 429 例外狀況的可能原因:

  1. 在 Azure 入口網站中開啟您的 Azure Cosmos DB 帳戶頁面。
  2. 在 [深入解析->要求] 功能表下,查看 [依狀態碼的要求總數] 圖表,並搜尋所出現的 429 例外狀況。
  3. 如有需要,依「時間範圍」和「資料庫」篩選圖表到您想要的時間範圍和資料庫。

對於大部分的應用程式,少於 5% 的要求有 429 例外狀況為正常。

Diagram that shows the charts by Status code and Throttled Request (429 exceptions).

如果 429 例外狀況的百分比高於 5%,則例外狀況可能是由於經常性分割區導致。

若要驗證資料庫存取是否跨越經常性分割區,請在 Azure 入口網站中,於 Azure Cosmos DB 帳戶下,於 [深入解析] -> [輸送量] 下,檢閱 [依 PartitionKeyRangeID 排序的標準化 RU 使用量] 圖表。

Diagram that shows the charts by throughput of a hot partition.

中繼資料要求的速率限制

執行大量的以下中繼資料作業時,可能會發生 429 例外狀況:

  • 建立、讀取、更新或刪除容器或資料庫
  • 列出 Cosmos 帳戶中的資料庫或容器
  • 查詢目前的佈建輸送量

若要調查 429 例外狀況是否由中繼資料要求導致,請在 Azure 入口網站的 Azure Cosmos DB 帳戶下,於 [深入解析] -> [系統] 下,檢閱 [超過容量的中繼資料要求 (429)] 圖表。

Diagram that shows the charts for metadata access.

由於暫時性服務錯誤的速率限制

在該時間前後,您注意到發生 429 例外狀況,您可能也會注意到 [深入解析] -> [要求] [依狀態碼的要求總數] 圖表中回報了 503 錯誤。 這些例外狀況可能表示 429 例外狀況的發生是因為暫時性服務錯誤。