Monitorowanie i debugowanie za pomocą szczegółowych informacji w usłudze Azure Cosmos DB
DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
Usługa Azure Cosmos DB zapewnia szczegółowe informacje dotyczące przepływności, magazynu, spójności, dostępności i opóźnień. Witryna Azure Portal oferuje zagregowany widok tych metryk. Możesz również wyświetlić metryki usługi Azure Cosmos DB z poziomu interfejsu API usługi Azure Monitor. Wartości wymiarów metryk, takich jak nazwa kontenera, są bez uwzględniania wielkości liter. W związku z tym należy użyć porównania bez uwzględniania wielkości liter podczas porównywania ciągów dla tych wartości wymiarów. Aby dowiedzieć się, jak wyświetlać metryki z usługi Azure Monitor, zobacz Monitorowanie usługi Azure Cosmos DB.
W tym artykule opisano typowe przypadki użycia i sposób używania szczegółowych informacji usługi Azure Cosmos DB do analizowania i debugowania tych problemów. Domyślnie szczegółowe informacje o metryce są zbierane co pięć minut i są przechowywane przez siedem dni.
W poniższych sekcjach opisano typowe scenariusze, w których można używać metryk usługi Azure Cosmos DB.
Informacje o liczbie żądań pomyślnych lub powodujących błędy
Aby rozpocząć, przejdź do witryny Azure Portal i przejdź do okienka Szczegółowe informacje . W tym okienku otwórz kartę Żądania . Na karcie Żądania jest wyświetlany wykres z łączną liczbie żądań posegmentowanych według kodu stanu i typu operacji. Aby uzyskać więcej informacji na temat kodów stanu HTTP, zobacz Kody stanu HTTP dla usługi Azure Cosmos DB.
Najczęstszym kodem stanu błędu jest 429 (ograniczanie szybkości/ograniczanie przepustowości). Ten błąd oznacza, że żądania do usługi Azure Cosmos DB są większe niż aprowizowana przepływność. Najczęstszym rozwiązaniem tego problemu jest skalowanie jednostek RU w górę dla danej kolekcji. Aby uzyskać więcej informacji, zobacz Wprowadzenie do aprowizowanej przepływności w usłudze Azure Cosmos DB
Określanie użycia przepływności według zakresu kluczy partycji
Dobra kardynalność kluczy partycji jest niezbędna dla każdej skalowalnej aplikacji. Aby określić rozkład przepływności dowolnego partycjonowanego kontenera podzielonego według identyfikatorów zakresu kluczy partycji, przejdź do okienka Szczegółowe informacje . Otwórz kartę Przepływność . Znormalizowane użycie jednostek RU/s w różnych zakresach kluczy partycji jest wyświetlane na wykresie.
Za pomocą tego wykresu możesz określić, czy istnieje gorąca partycja. Identyfikatory PartitionKeyRangeID odpowiadają partycjom fizycznym. Metryka Znormalizowane użycie jednostek RU jest wartością z zakresu od 0% do 100%, która pomaga zmierzyć wykorzystanie aprowizowanej przepływności w bazie danych lub kontenerze. Nierównomierna dystrybucja przepływności może powodować gorące partycje, co może spowodować ograniczenie żądań i może wymagać ponownego partycjonowania. Po zidentyfikowaniu, który klucz partycji powoduje niesymetryczność w dystrybucji, może być konieczne ponowne podzielenie kontenera z bardziej rozproszonym kluczem partycji. Aby uzyskać więcej informacji na temat partycjonowania w usłudze Azure Cosmos DB, zobacz Partycjonowanie i skalowanie w poziomie w usłudze Azure Cosmos DB.
Określanie użycia danych i indeksów
Ważne jest, aby określić rozkład magazynu dowolnego partycjonowanego kontenera według użycia danych, użycia indeksu i użycia dokumentów. Możesz zminimalizować użycie indeksu, zmaksymalizować użycie danych i zoptymalizować zapytania. Aby uzyskać te dane, przejdź do okienka Szczegółowe informacje i otwórz kartę Magazyn .
Porównywanie rozmiaru danych z rozmiarem indeksu
W usłudze Azure Cosmos DB łączna ilość zużytego magazynu jest kombinacją zarówno rozmiaru danych, jak i rozmiaru indeksu. Zazwyczaj rozmiar indeksu jest ułamkiem rozmiaru danych. Aby dowiedzieć się więcej, zobacz artykuł Rozmiar indeksu. W okienku Metryki w witrynie Azure Portal karta Magazyn przedstawia podział użycia magazynu na podstawie danych i indeksu.
// Measure the document size usage (which includes the index size)
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);
Jeśli chcesz zaoszczędzić miejsce na indeksowaniu, możesz dostosować zasady indeksowania.
Debugowanie wolnych zapytań
W zestawach SDK interfejsu API dla noSQL usługa Azure Cosmos DB udostępnia statystyki wykonywania zapytań.
IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
"SELECT * FROM c WHERE c.city = 'Seattle'",
new FeedOptions
{
PopulateQueryMetrics = true,
MaxItemCount = -1,
MaxDegreeOfParallelism = -1,
EnableCrossPartitionQuery = true
}).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();
// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;
Funkcja QueryMetrics zawiera szczegółowe informacje na temat czasu wykonywania poszczególnych składników zapytania. Najczęstszą główną przyczyną długotrwałych zapytań jest skanowanie, co oznacza, że zapytanie nie mogło zastosować indeksów. Ten problem można rozwiązać przy użyciu lepszego warunku filtrowania.
Monitorowanie żądań płaszczyzny sterowania
Usługa Azure Cosmos DB stosuje limity liczby żądań metadanych, które mogą być wykonywane w kolejnych 5-minutowych interwałach. Żądania płaszczyzny sterowania, które przekroczają te limity, mogą wystąpić ograniczanie przepustowości. Żądania metadanych mogą w niektórych przypadkach zużywać przepływność względem master partition
konta zawierającego wszystkie metadane konta. Żądania płaszczyzny sterowania, które przekroczają ilość przepływności, będą doświadczać ograniczania szybkości (429s).
Aby rozpocząć, przejdź do witryny Azure Portal i przejdź do okienka Szczegółowe informacje . W tym okienku otwórz kartę System . Na karcie System są wyświetlane dwa wykresy. Taki, który pokazuje wszystkie żądania metadanych dla konta. Drugi pokazuje, że metadane żądają użycia przepływności z konta master partition
, które przechowuje metadane konta.
Wykres Żądania metadanych według kodu stanu powyżej agreguje żądania o większej szczegółowości w miarę zwiększania zakresu czasu. Największy zakres czasu, którego można użyć dla przedziału czasu 5 minut, wynosi 4 godziny. Aby monitorować żądania metadanych w większym zakresie czasu o określonym stopniu szczegółowości, użyj metryk platformy Azure. Utwórz nowy wykres i wybierz pozycję Metryka Żądania metadanych. W prawym górnym rogu wybierz pozycję 5 minut dla stopnia szczegółowości czasu, jak pokazano poniżej. Metryki umożliwiają również użytkownikom tworzenie alertów , co sprawia, że są one bardziej przydatne niż szczegółowe informacje.
Następne kroki
Aby dowiedzieć się więcej na temat poprawy wydajności bazy danych, przeczytaj następujące artykuły: