共用方式為


監視 Azure Cosmos DB 中的標準化要求單位

適用於 Azure Cosmos DB 的 Azure 監視器提供計量檢視,以監視您的帳戶和建立儀表板。 根據預設,會收集 Azure Cosmos DB 計量。 此功能不需要您明確啟用或設定任何東西。

計量定義

標準化 RU 消耗量 是介於 0% 到 100% 之間的指標,可用來量測資料庫或容器上設定輸送量的使用率。 此度量值以 1 分鐘間隔發送,定義為時間間隔中所有分割鍵範圍內最大每秒要求單位數(RU/秒)的使用率。 每個分割區索引鍵範圍會對應至一個實體分割區,並指派來保存某範圍可能雜湊值的資料。 一般而言,標準化 RU 百分比越高,表示您已使用的布建輸送量越多。 計量也可用來檢視資料庫或容器上個別分割區索引鍵範圍的使用率。

例如,假設您有一個容器,其中您設定自動調整最大輸送量為 20,000 RU/秒 (在 2000 - 20,000 RU/秒之間調整),且您有兩個分割區索引鍵範圍 (實體分割區) P1 和 P2。 由於 Azure Cosmos DB 會將佈建的輸送量平均分散至所有分割區索引鍵範圍,P1 和 P2 可以各自在 1000 - 10,000 RU/秒之間調整。 假設以 1 分鐘的間隔,在指定的秒內,P1 耗用 6,000 RUs,P2 耗用 8,000 RUs。 P1 的標準化 RU 使用量是 60%,而 P2 為 80%。 整個容器的整體標準化 RU 使用量上限 (60%,80%) = 80%。

若您對查看每秒的要求單位耗用量以及操作類型感興趣,可以啟用診斷記錄並查詢PartitionKeyRUConsumption資料表。 若要取得應用程式在 Azure Cosmos DB 資源上執行之作業和狀態代碼的高階概觀,您可以使用內建的 Azure 監視器 總計要求 (API for NoSQL)、 Mongo 要求Gremlin 要求Cassandra Requests 計量。 稍後,您可以依 429 狀態代碼篩選這些要求,並依 作業類型加以分割。

當標準化 RU/秒偏高時有何情況及應對方式

當指定分割區索引鍵範圍的標準化 RU 耗用量達到 100% 時,如果用戶端在該時間範圍內對該特定分割區索引鍵範圍發出 1 秒的要求,則會收到速率限制的錯誤 (429)。

這不一定表示您的資源發生問題。 根據預設,Azure Cosmos DB 用戶端 SDK 和數據匯入工具,如 Azure Data Factory 和批量執行程式庫,會自動在遇到 429 錯誤時重試要求。 此作業通常最多會重試九次。 如此一來,雖然您可能會在計量中看到 429,但這些錯誤甚至可能不會傳回給您的應用程式。

一般來說,針對生產工作負載,如果您在要求 1-5% 之間看見 429,而您的端對端延遲可供接受,則這是已充分利用 RU/秒的情況良好訊號。 在此情況下,標準化 RU 使用量計量達到 100% 僅表示在指定秒數內,至少有一個分割區索引鍵範圍使用了其所有佈建的輸送量。 這是可接受的,因為整體要求率 429s 仍然很低。 不需要採取任何動作。

若要判斷對資料庫或容器的要求百分比達到多少會導致 429s,請從您的 Azure Cosmos DB 帳戶中,瀏覽至 [深入解析]> [要求]> [依狀態碼的要求總數]。 篩選至特定的資料庫和容器。 針對 API for Gremlin,請使用 Gremlin 要求計量。

顯示 429 和 2xx 狀態碼請求總數的圖表螢幕截圖。

如果標準化 RU 使用量計量在多個分割區索引鍵範圍中一致為 100%,且 429s 的要求率大於 5%,則建議您增加輸送量。 您可以利用 Azure 監視器計量和 Azure 監視器診斷記錄,查明哪些作業負荷沉重及其尖峰使用量。 若要瞭解最佳做法,請參閱調整布建輸送量的最佳做法(RU/秒)。

您不一定會只因為標準化 RU 已達到 100% 而看到 429 要求率限制錯誤。 這是因為標準化 RU 是單一值,代表所有分割區索引鍵範圍的最大使用量。 一個分割鍵範圍可能正在忙碌,但其他分割鍵範圍可以正常處理要求,且不會有問題。 例如,在分割區索引鍵範圍上取用所有 RU/秒的單一作業 (例如預存程序),會導致標準化 RU 使用量計量出現短暫尖峰。 在這種情況下,如果整體要求率偏低,或要求是對不同分割區索引鍵範圍的其他分割區提出的,就不會立即顯示要求率限制錯誤。

若要深入瞭解,請參閱 診斷和疑難解答 429 個例外狀況

如何監視經常性存取層分割區

標準化的 RU 使用量計量可用來監視工作負載是否有經常性存取層分割區。 當一個或一些邏輯分割區索引鍵因為較高的要求量而耗用與總計 RU/秒不成比例的數量時,就會發生經常性存取層分割區。 這可能是因為不會平均散發要求的分割區索引鍵設計所導致。 這會導致將許多要求導向至成為「經常性存取層」的一小部分邏輯分割區 (隱含為分割區索引鍵範圍)。 因為邏輯分割區的所有資料都位於一個分割區索引鍵範圍上,而且 RU/秒總計平均散發至所有分割區索引鍵範圍,所以經常性存取層分割區可能會導致 429,而且輸送量的使用不具效率。

如何識別熱分區

若要確認是否有經常性存取層分割區,請瀏覽至 [深入解析]> [輸送量]> [依 PartitionKeyRangeID 標準化 RU 使用量 (%)]。 篩選至特定的資料庫和容器。

每個 PartitionKeyRangeId 都會與一個實體分割區對應。 如果某個 PartitionKeyRangeId 高於其他項目的正規化 RU 耗用量 (例如,一個一致處於 100%,但其他處於 30% 或更少),則這可能是經常性存取層分割區的訊號。

使用經常性分割區的「依 PartitionKeyRangeID 標準化 RU 使用量」圖表的螢幕擷取畫面。

若要識別耗用最多 RU/秒的邏輯分割區,請參閱 如何識別熱分割區

正規化 RU 耗用量和自動調整

如果至少一個分割區索引鍵範圍在時間間隔的任何指定秒數中使用所有其配置的 RU/秒,則標準化 RU 使用量計量會顯示為 100%。 其中一個常見的問題是,為什麼標準化 RU 使用量為 100%,但 Azure Cosmos DB 並未將 RU/秒調整為自動調整的最大輸送量?

附註

下列資訊描述目前自動調整的實作,但未來可能會有所變更。

當您使用自動調整時,Azure Cosmos DB 只會在標準化 RU 使用量為 100% 時,以 5 秒間隔的持續期間將 RU/秒調整為最大輸送量。 這樣做可確保調整邏輯對用戶來說成本相當好,因為它可確保單一的暫時尖峰不會造成不必要的調整和更高的成本。 發生暫時尖峰時,系統通常會擴大至高於先前調整為 RU/秒的值,但低於最大 RU/秒。

例如,假設您有一個容器,其輸送量上限為 20,000 RU/秒 (會在 2000 - 20,000 RU/秒之間調整),以及兩個個分割區索引鍵範圍。 每個分割區索引鍵範圍可以在 1000 - 10,000 RU/秒之間調整。 因為自動調整會預先佈建所有必要的資源,所以您可以隨時使用最多 20,000 RU/秒。

現在假設您有間歇性的流量尖峰:

在一秒內,分割區 1 的使用量短暫上升至 10,000 RU/秒,然後在接下來的四秒內降至 1,000 RU/秒。

同時,分割區 2 尖峰達到 8,000 RU/秒,然後在接下來四秒降至 1,000 RU/秒。

這是計量的行為方式:

標準化 RU 耗用量 (顯示所有分割區間隔的使用量上限) 會顯示 100% 使用率,因為分割區 1 達到其最大值一秒。

不過,預配置的吞吐量和自動縮放的 RU 指標不會因為 1 秒尖峰而增加至最大 RU/秒。 它會根據 5 秒的間隔進行調整,以符合成本效益。 因此,針對上述範例,分割區 1 和分割區 2 RU 耗用量不會根據 5 秒間隔達到 10,000 RU/秒。

因此,即使自動調整並未調整為最大值,您仍然可以在尖峰秒數時使用可用的 RU/秒總數。 若要確認 RU/秒使用量,您可以使用選擇加入診斷記錄功能來查詢所有分割區索引鍵範圍之間每秒層級的整體 RU/秒使用量。

CDBPartitionKeyRUConsumption
| where TimeGenerated >= (todatetime('2022-01-28T20:35:00Z')) and TimeGenerated <= todatetime('2022-01-28T20:40:00Z')
| where DatabaseName == "MyDatabase" and CollectionName == "MyContainer"
| summarize sum(RequestCharge) by bin(TimeGenerated, 1sec), PartitionKeyRangeId
| render timechart

一般來說,針對使用自動調整的生產工作負載,如果您看到 1-5% 之間的要求出現 429,而您的端對端延遲是可接受的,則這是 RU/秒已充分利用的情況良好訊號。 即使標準化的 RU 使用量偶爾達到 100%,且自動調整並未擴大至最大 RU/秒,但這沒問題,因為整體要求率 429s 仍相當低。 您不需要執行任何動作。

秘訣

如果您使用自動調整,且發現標準化的 RU 使用量一致為 100%,而且您一致地調整為最大 RU/秒,則這是使用手動輸送量可能更具有成本效益的訊號。 若要判斷自動調整或手動輸送量是否最適合您的工作負載,請參閱 如何選擇標準 (手動) 和自動調整布建的輸送量。 Azure Cosmos DB 也會根據您的工作負載模式傳送 成本建議 ,以建議手動或自動調整輸送量。

檢視標準化要求單位耗用量計量

  1. 登入 Azure 入口網站

  2. 從左側導覽列選取 [監視器],然後選取 [計量]

    Azure 監視器中 [計量] 窗格的螢幕快照。

  3. 從 [計量] 窗格 >選取一個資源>選擇必要的 [訂用帳戶] 和 [資源群組]。 在 [資源類型] 中,選取 [Azure Cosmos DB 帳戶],然後選擇其中一個現有的 Azure Cosmos DB 帳戶並選取 [套用]

    顯示如何選取帳戶範圍以檢視計量的螢幕快照。

  4. 接下來,您可以從可用的計量清單中選取計量。 您可以選取 [要求單位]、[儲存體]、[延遲]、[可用性]、[Cassandra] 等等的專屬計量。 若要深入了解此清單中所有可用的計量,請參閱依類別區分的計量一文。 在此範例中,讓我們選取 [標準化 RU 耗用量] 計量,並選取 [最大值] 作為彙總值。

    除了這些詳細資料之外,您也可以選取計量的 [時間範圍] 和 [時間細微性]。 在 [最大值] 中,您可以檢視過去 30 天的計量。 套用篩選之後,圖表就會根據您的篩選條件來顯示。

    顯示如何從 Azure 入口網站選擇計量的螢幕快照。

標準化 RU 使用量計量的篩選條件

您也可以依特定的 CollectionNameDatabaseNamePartitionKeyRangeIDRegion,篩選顯示的計量和圖表。 若要篩選計量,請選取 [ 新增篩選] ,然後選擇所需的屬性,例如 CollectionName 和您感興趣的對應值。 圖表接著會顯示容器在所選期間內取用的標準化 RU 使用量計量。

您可以使用 [套用分割] 選項來將計量分組。 對於共用輸送量資料庫,標準化 RU 計量顯示的資料最多只到資料庫細微程度,而不顯示每個集合的任何資料。 因此,對於共用輸送量資料庫,依集合名稱套用分割時,您不會看到任何資料。

每個容器的標準化要求單位耗用量計量如下圖所示:

圖表的螢幕擷取畫面,其中已將篩選至套用至標準化要求單位耗用量計量。

後續步驟