Jak monitorować znormalizowane jednostki RU/s dla kontenera usługi Azure Cosmos DB lub konta

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

Usługa Azure Monitor dla usługi Azure Cosmos DB udostępnia widok metryk do monitorowania konta i tworzenia pulpitów nawigacyjnych. Metryki usługi Azure Cosmos DB są zbierane domyślnie. Ta funkcja nie wymaga jawnego włączenia ani skonfigurowania żadnych elementów.

Definicja metryki

Metryka Znormalizowane użycie jednostek RU jest metryką z zakresu od 0% do 100%, która służy do mierzenia wykorzystania aprowizowanej przepływności w bazie danych lub kontenerze. Metryka jest emitowana w odstępach 1 minut i jest definiowana jako maksymalne użycie jednostek RU/s we wszystkich zakresach kluczy partycji w interwale czasu. Każdy zakres kluczy partycji jest mapowany na jedną partycję fizyczną i jest przypisany do przechowywania danych dla zakresu możliwych wartości skrótu. Ogólnie rzecz biorąc, im wyższa jest wartość procentowa znormalizowanych jednostek RU, tym większe jest wykorzystanie aprowizowanej przepływności. Metryka może również służyć do wyświetlania wykorzystania poszczególnych zakresów kluczy partycji w bazie danych lub kontenerze.

Załóżmy na przykład, że masz kontener, w którym ustawiono maksymalną przepływność autoskalowania 20 000 RU/s (skalowanie między 2000 a 20 000 RU/s) i masz dwa zakresy kluczy partycji (partycje fizyczne) P1 i P2. Ponieważ usługa Azure Cosmos DB dystrybuuje aprowizowaną przepływność równomiernie we wszystkich zakresach kluczy partycji, każda z nich może być skalowana między 1000 a 10 000 RU/s. Załóżmy, że w 1-minutowym interwale, w danej sekundzie P1 zużywało 6000 jednostek żądań i P2 zużywało 8000 jednostek żądań. Znormalizowane użycie jednostek RU P1 wynosi 60% i 80% dla P2. Całkowite znormalizowane użycie jednostek RU całego kontenera wynosi MAX(60%, 80%) = 80%.

Jeśli interesuje Cię wyświetlanie użycia jednostek żądania w interwale na sekundę, wraz z typem operacji, możesz użyć funkcji Dzienniki diagnostyczne funkcji i wysłać zapytanie do tabeli PartitionKeyRUConsumption. Aby uzyskać ogólne omówienie operacji i kodu stanu wykonywanego przez aplikację w zasobie usługi Azure Cosmos DB, możesz użyć wbudowanej metryki Azure Monitor Total Requests (API for NoSQL), Mongo Requests, Gremlin Requests lub Cassandra Requests . Później można filtrować te żądania według kodu stanu 429 i podzielić je według typu operacji.

Czego można oczekiwać i zrobić, gdy znormalizowane jednostki RU/s są wyższe

Gdy znormalizowane użycie jednostek RU osiągnie 100% dla danego zakresu kluczy partycji, a klient nadal wysyła żądania w tym przedziale czasu wynoszącym 1 sekundę do tego określonego zakresu kluczy partycji — otrzymuje błąd ograniczony szybkości (429).

Niekoniecznie oznacza to, że występuje problem z zasobem. Domyślnie zestawy SDK klienta usługi Azure Cosmos DB i narzędzia do importowania danych, takie jak usługa Azure Data Factory i biblioteka funkcji wykonawczej operacji zbiorczych, automatycznie ponawiają żądania na 429s. Ponawiają próby zazwyczaj do 9 razy. W związku z tym, chociaż w metrykach może być widocznych 429, te błędy mogą nawet nie zostać zwrócone do aplikacji.

Na ogół w przypadku obciążenia produkcyjnego, jeśli widzisz od 1 do 5% żądań z błędami 429, a całkowite opóźnienie jest akceptowalne, jest to zdrowa oznaka, że wartości RU/s są w pełni wykorzystywane. W tym przypadku metryka znormalizowanego użycia jednostek RU osiąga tylko 100% oznacza, że w danej sekundzie co najmniej jeden zakres kluczy partycji używał całej aprowizowanej przepływności. Jest to dopuszczalne, ponieważ ogólny wskaźnik błędów 429 jest nadal niski. Nie są wymagane żadne dalsze działania.

Aby określić, jaki procent żądań do bazy danych lub kontenera spowodował 429s, w bloku konta usługi Azure Cosmos DB przejdź do pozycji Szczegółowe informacje> Wymagaj łączne>żądania według kodu stanu. Filtruj do określonej bazy danych i kontenera. W przypadku interfejsu API dla języka Gremlin użyj metryki Żądania języka Gremlin. Total Requests by Status Code chart that shows number of 429 and 2xx requests.

Jeśli znormalizowana metryka użycia jednostek RU jest stale 100% w wielu zakresach kluczy partycji, a szybkość 429 jest większa niż 5%, zaleca się zwiększenie przepływności. Aby dowiedzieć się, których operacji jest najwięcej i jakie jest ich szczytowe użycie, możesz skorzystać z metryk i dzienników diagnostycznych usługi Azure Monitor. Postępuj zgodnie z najlepszymi rozwiązaniami dotyczącymi skalowania aprowizowanej przepływności (RU/s).

Nie zawsze jest tak, że zobaczysz błąd ograniczania szybkości 429 tylko dlatego, że znormalizowana jednostka RU osiągnęła 100%. Wynika to z faktu, że znormalizowana jednostka RU jest pojedynczą wartością, która reprezentuje maksymalne użycie we wszystkich zakresach kluczy partycji. Jeden zakres kluczy partycji może być zajęty, ale inne zakresy kluczy partycji mogą obsługiwać żądania bez problemów. Na przykład pojedyncza operacja, taka jak procedura składowana, która zużywa wszystkie jednostki RU/s w zakresie kluczy partycji, doprowadzi do krótkiego skoku znormalizowanego użycia jednostek RU. W takich przypadkach nie będzie żadnych natychmiastowych błędów ograniczania szybkości, jeśli ogólna szybkość żądań jest niska lub żądania są wysyłane do innych partycji w różnych zakresach kluczy partycji.

Dowiedz się więcej na temat sposobu interpretowania i debugowania błędów ograniczania szybkości 429.

Jak monitorować gorące partycje

Metryka znormalizowanego użycia jednostek ŻĄDANIA może służyć do monitorowania, czy obciążenie ma gorącą partycję. Gorąca partycja pojawia się, gdy jeden lub kilka kluczy partycji logicznych zużywa nieproporcjonalną ilość całkowitej liczby jednostek RU/s z powodu większego woluminu żądań. Może to być spowodowane przez projekt klucza partycji, który nie dystrybuuje równomiernie żądań. Powoduje to kierowanie wielu żądań do małego podzbioru partycji logicznych (co oznacza zakresy kluczy partycji), które stają się "gorące". Ponieważ wszystkie dane partycji logicznej znajdują się w jednym zakresie kluczy partycji, a łączna liczba jednostek RU/s jest równomiernie rozłożona między wszystkie zakresy kluczy partycji, gorąca partycja może prowadzić do 429 i nieefektywnego wykorzystania przepływności.

Jak określić, czy istnieje gorąca partycja

Aby sprawdzić, czy istnieje gorąca partycja, przejdź do pozycji Szczegółowe informacje> Użycie>znormalizowanych jednostek RU (%) według PartitionKeyRangeID. Filtruj do określonej bazy danych i kontenera.

Każda partycja PartitionKeyRangeId mapuje na jedną partycję fizyczną. Jeśli istnieje jeden identyfikator PartitionKeyRangeId, który ma znacznie wyższe znormalizowane użycie jednostek RU niż inne (na przykład jeden jest stale na poziomie 100%, ale inne są w 30% lub mniejsze), może to być oznaką gorącej partycji.

Normalized RU Consumption by PartitionKeyRangeId chart with a hot partition.

Aby zidentyfikować partycje logiczne, które zużywają najwięcej jednostek RU/s, a także zalecane rozwiązania, zobacz artykuł Diagnozowanie i rozwiązywanie problemów z zbyt dużymi wyjątkami liczby żądań usługi Azure Cosmos DB (429).

Znormalizowane użycie jednostek RU i autoskalowanie

Metryka znormalizowanego użycia jednostek RU będzie wyświetlana jako 100%, jeśli co najmniej 1 zakres kluczy partycji używa wszystkich przydzielonych jednostek RU/s w danej sekundzie w interwale czasu. Jednym z typowych pytań jest to, dlaczego znormalizowane użycie jednostek RU wynosi 100%, ale usługa Azure Cosmos DB nie przeskalowała jednostek RU/s do maksymalnej przepływności z autoskalowaniem?

Uwaga

Poniższe informacje opisują bieżącą implementację autoskalowania i mogą ulec zmianie w przyszłości.

W przypadku korzystania z automatycznego skalowania usługa Azure Cosmos DB skaluje wartość RU/s tylko do maksymalnej przepływności, gdy znormalizowane użycie jednostek RU wynosi 100% dla trwałego, ciągłego okresu w 5-sekundowym interwale. Dzięki temu logika skalowania jest przyjazna dla użytkownika, ponieważ gwarantuje, że pojedyncze, chwilowe skoki nie prowadzą do niepotrzebnego skalowania i wyższych kosztów. Gdy występują chwilowe skoki, system zwykle skaluje w górę do wartości wyższej niż wcześniej skalowana do ru/s, ale niższa niż maksymalna liczba jednostek RU/s.

Załóżmy na przykład, że masz kontener z maksymalną przepływnością skalowania automatycznego 20 000 RU/s (skaluje się między 2000 a 20 000 RU/s) i 2 zakresy kluczy partycji. Każdy zakres kluczy partycji może być skalowany w zakresie od 1000 do 10 000 RU/s. Ponieważ automatyczne skalowanie aprowizuje wszystkie wymagane zasoby z góry, w dowolnym momencie można użyć maksymalnie 20 000 RU/s. Załóżmy, że występuje sporadycznie skok ruchu, w którym w ciągu jednej sekundy użycie jednego z zakresów kluczy partycji wynosi 10 000 RU/s. W kolejnych sekundach użycie wraca do 1000 RU/s. Ponieważ znormalizowane użycie jednostek RU pokazuje najwyższe wykorzystanie w okresie we wszystkich partycjach, spowoduje to wyświetlenie 100%. Jednak ze względu na to, że użycie wynosiło tylko 100% przez 1 sekundę, automatyczne skalowanie nie będzie automatycznie skalowane do maksymalnej wartości.

W związku z tym, mimo że skalowanie automatyczne nie zostało skalowane do maksymalnej, nadal można było użyć łącznej liczby jednostek RU/s dostępnych. Aby sprawdzić użycie jednostek RU/s, możesz użyć funkcji Dzienniki diagnostyczne funkcji do wykonywania zapytań dotyczących ogólnego użycia jednostek RU/s na poziomie na sekundę we wszystkich zakresach kluczy partycji.

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

Ogólnie rzecz biorąc, w przypadku obciążenia produkcyjnego przy użyciu automatycznego skalowania, jeśli widzisz od 1 do 5% żądań z 429, a końcowe opóźnienie jest akceptowalne, jest to znak dobrej kondycji, że ru/s są w pełni wykorzystywane. Nawet jeśli znormalizowane użycie jednostek RU od czasu do czasu osiągnie 100%, a autoskalowanie nie jest skalowane w górę do maksymalnej wartości RU/s, jest to ok, ponieważ ogólna szybkość 429 jest niska. Nie trzeba podejmować żadnych działań.

Napiwek

Jeśli używasz skalowania automatycznego i okaże się, że znormalizowane użycie jednostek RU jest stale 100% i stale skalowane do maksymalnej liczby jednostek RU/s, jest to znak, że użycie przepływności ręcznej może być bardziej ekonomiczne. Aby określić, czy automatyczne skalowanie czy przepływność ręczna jest najlepsza dla obciążenia, zobacz , jak wybrać między przepływnością standardową (ręczną) i aprowizowaną przepływnością autoskalowania. Usługa Azure Cosmos DB wysyła również rekomendacje usługi Azure Advisor na podstawie wzorców obciążeń, aby zalecić przepływność ręczną lub automatyczną.

Wyświetlanie metryki znormalizowanych jednostek żądania

  1. Zaloguj się w witrynie Azure Portal.

  2. Wybierz pozycję Monitoruj na pasku nawigacyjnym po lewej stronie, a następnie wybierz pozycję Metryki.

    Metrics pane in Azure Monitor

  3. W okienku >Metryki Wybierz zasób> wybierz wymaganą subskrypcję i grupę zasobów. W polu Typ zasobu wybierz pozycję Konta usługi Azure Cosmos DB, wybierz jedno z istniejących kont usługi Azure Cosmos DB, a następnie wybierz pozycję Zastosuj.

    Select the account scope to view metrics

  4. Następnie możesz wybrać metrykę z listy dostępnych metryk. Możesz wybrać metryki specyficzne dla jednostek żądania, magazynu, opóźnienia, dostępności, bazy danych Cassandra i innych. Aby dowiedzieć się szczegółowo o wszystkich dostępnych metrykach na tej liście, zobacz artykuł Metryki według kategorii . W tym przykładzie wybierzmy metryki Znormalizowane użycie jednostek RU i Wartość maksymalna jako wartość agregacji.

    Oprócz tych szczegółów można również wybrać zakres czasu i stopień szczegółowości czasu metryk. Maksymalnie można wyświetlić metryki z ostatnich 30 dni. Po zastosowaniu filtru zostanie wyświetlony wykres na podstawie filtru.

    Choose a metric from the Azure portal

Filtry dla metryki znormalizowanych jednostek RU

Możesz również filtrować metryki i wykres wyświetlany według określonej wartości CollectionName, DatabaseName, PartitionKeyRangeID i Region. Aby filtrować metryki, wybierz pozycję Dodaj filtr i wybierz wymaganą właściwość, taką jak CollectionName i odpowiadającą ci wartość. Następnie na wykresie jest wyświetlana metryka znormalizowanego użycia jednostek RU dla kontenera dla wybranego okresu.

Metryki można grupować przy użyciu opcji Zastosuj dzielenie . W przypadku baz danych z udostępnioną przepływnością metryka znormalizowanej jednostki RU pokazuje tylko dane na poziomie szczegółowości bazy danych, ale nie wyświetla żadnych danych na kolekcję. W przypadku bazy danych z udostępnioną przepływnością nie będą widoczne żadne dane podczas stosowania podziału według nazwy kolekcji.

Metryka znormalizowanych użycia jednostek żądania dla każdego kontenera jest wyświetlana, jak pokazano na poniższej ilustracji:

Apply filters to normalized request unit consumption metric

Następne kroki