觀察速率限制事件
在此單元中,我們將討論識別速率限制事件的方法。
使用 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 例外狀況的可能原因:
- 在 Azure 入口網站中開啟您的 Azure Cosmos DB 帳戶頁面。
- 在 [深入解析->要求] 功能表下,查看 [依狀態碼的要求總數] 圖表,並搜尋所出現的 429 例外狀況。
- 如有需要,依「時間範圍」和「資料庫」篩選圖表到您想要的時間範圍和資料庫。
對於大部分的應用程式,少於 5% 的要求有 429 例外狀況為正常。
如果 429 例外狀況的百分比高於 5%,則例外狀況可能是由於經常性分割區導致。
若要驗證資料庫存取是否跨越經常性分割區,請在 Azure 入口網站中,於 Azure Cosmos DB 帳戶下,於 [深入解析] -> [輸送量] 下,檢閱 [依 PartitionKeyRangeID 排序的標準化 RU 使用量] 圖表。
中繼資料要求的速率限制
執行大量的以下中繼資料作業時,可能會發生 429 例外狀況:
- 建立、讀取、更新或刪除容器或資料庫
- 列出 Cosmos 帳戶中的資料庫或容器
- 查詢目前的佈建輸送量
若要調查 429 例外狀況是否由中繼資料要求導致,請在 Azure 入口網站的 Azure Cosmos DB 帳戶下,於 [深入解析] -> [系統] 下,檢閱 [超過容量的中繼資料要求 (429)] 圖表。
由於暫時性服務錯誤的速率限制
在該時間前後,您注意到發生 429 例外狀況,您可能也會注意到 [深入解析] -> [要求] [依狀態碼的要求總數] 圖表中回報了 503 錯誤。 這些例外狀況可能表示 429 例外狀況的發生是因為暫時性服務錯誤。