Monitorování a ladění pomocí přehledů ve službě Azure Cosmos DB
PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl
Azure Cosmos DB poskytuje přehledy o propustnosti, úložišti, konzistenci, dostupnosti a latenci. Azure Portal nabízí agregované zobrazení těchto metrik. Metriky služby Azure Cosmos DB můžete zobrazit také s využitím rozhraní API služby Azure Monitor. Hodnoty dimenzí pro metriky, jako je název kontejneru, nerozlišují malá a velká písmena. Proto při porovnávání řetězců s těmito hodnotami dimenzí musíte použít porovnání nerozlišující malá a velká písmena. Informace o tom, jak zobrazit metriky ze služby Azure Monitor, najdete v tématu Monitorování služby Azure Cosmos DB.
Tento článek vás provede běžnými případy použití a zjistí, jak je možné k analýze a ladění těchto problémů použít přehledy služby Azure Cosmos DB. Ve výchozím nastavení se přehledy metrik shromažďují každých pět minut a uchovávají se sedm dní.
Následující části popisují běžné scénáře, ve kterých můžete používat metriky služby Azure Cosmos DB.
Poznámka:
Při filtrování podle databáze nebo kolekcí v metrikách je možné, že jako název prostředku uvidíte "__Empty" nebo "<Empty>". Důvodem je to, že se data metrik shromažďují na úrovni účtu pro daný požadavek. Proto neexistuje žádná přidružená databáze nebo kolekce jako hodnota metriky.
Vysvětlení počtu úspěšných nebo příčin chyb požadavků
Začněte tím, že přejdete na web Azure Portal a přejdete do podokna Přehledy . V tomto podokně otevřete kartu Žádosti . Karta Žádosti zobrazuje graf s celkovými požadavky segmentovanými stavovým kódem a typem operace. Další informace o stavových kódech HTTP najdete v tématu Stavové kódy HTTP pro Azure Cosmos DB.
Nejběžnější stavový kód chyby je 429 (omezování rychlosti nebo omezování). Tato chyba znamená, že požadavky na službu Azure Cosmos DB jsou větší než zřízená propustnost. Nejběžnějším řešením tohoto problému je vertikální navýšení kapacity RU pro danou kolekci. Další informace najdete v tématu Úvod do zřízené propustnosti ve službě Azure Cosmos DB.
Určení spotřeby propustnosti podle rozsahu klíčů oddílu
Dobrá kardinalita klíčů oddílů je nezbytná pro libovolnou škálovatelnou aplikaci. Pokud chcete určit distribuci propustnosti libovolného děleného kontejneru rozděleného podle ID rozsahu klíčů oddílů, přejděte do podokna Přehledy . Otevřete kartu Propustnost. Normalizovaná spotřeba RU/s napříč různými rozsahy klíčů oddílů se zobrazuje v grafu.
Pomocí tohoto grafu můžete zjistit, jestli existuje horký oddíl. Identifikátory PartitionKeyRangeIDs odpovídají fyzickým oddílům. Metrika Normalizovaná spotřeba RU je hodnota mezi 0 % a 100 %, která pomáhá měřit využití zřízené propustnosti v databázi nebo kontejneru. Nerovnoměrná distribuce propustnosti může způsobit horké oddíly, což může vést k omezování požadavků a může vyžadovat opětovné rozdělení. Jakmile zjistíte, který klíč oddílu způsobuje nerovnoměrnou distribuci, možná budete muset znovu rozdělit kontejner s více distribuovaným klíčem oddílu. Další informace o dělení ve službě Azure Cosmos DB najdete v tématu Dělení a horizontální škálování ve službě Azure Cosmos DB.
Určení využití dat a indexu
Je důležité určit distribuci úložiště libovolného děleného kontejneru podle využití dat, využití indexu a použití dokumentů. Můžete minimalizovat využití indexu, maximalizovat využití dat a optimalizovat dotazy. Pokud chcete získat tato data, přejděte do podokna Přehledy a otevřete kartu Úložiště .
Porovnání velikosti dat s velikostí indexu
V Azure Cosmos DB je celkové využité úložiště kombinací velikosti dat i velikosti indexu. Velikost indexu je obvykle zlomkem velikosti dat. Další informace najdete v článku o velikosti indexu. V podokně Metriky na webu Azure Portal ukazuje karta Úložiště rozpis spotřeby úložiště na základě dat a indexu.
// 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);
Pokud chcete ušetřit místo indexu, můžete upravit zásady indexování.
Ladění pomalých dotazů
V rozhraní API pro sady SDK NoSQL poskytuje Azure Cosmos DB statistiky spouštění dotazů.
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;
QueryMetrics poskytuje podrobnosti o tom, jak dlouho trvalo spuštění jednotlivých součástí dotazu. Nejběžnější hlavní příčinou dlouhotrvajících dotazů je prohledávání, což znamená, že dotaz nemohl použít indexy. Tento problém lze vyřešit lepší podmínkou filtru.
Monitorování žádostí řídicí roviny
Azure Cosmos DB používá omezení počtu požadavků na metadata, které je možné provést v po sobě jdoucích 5minutových intervalech. U žádostí řídicí roviny, které tyto limity překročí, může docházet k omezování. Požadavky na metadata můžou v některých případech spotřebovávat propustnost vůči master partition
účtu, který obsahuje všechna metadata účtu. U žádostí řídicí roviny, které přecházejí nad velikost propustnosti, dochází k omezování rychlosti (429).
Začněte tím, že přejdete na web Azure Portal a přejdete do podokna Přehledy . V tomto podokně otevřete kartu Systém . Karta Systém zobrazuje dva grafy. Jedna, která zobrazuje všechny požadavky na metadata pro účet. Druhý příklad ukazuje spotřebu propustnosti požadavků na propustnost z účtu master partition
, který ukládá metadata účtu.
Požadavek na metadata podle grafu stavového kódu výše agreguje požadavky s rostoucí větší členitostí při zvýšení časového rozsahu. Největší časový rozsah, který můžete použít pro interval 5 minut, je 4 hodiny. Pokud chcete monitorovat požadavky na metadata v delším časovém rozsahu s konkrétní členitostí, použijte metriky Azure. Vytvořte nový graf a vyberte metriku žádosti o metadata. V pravém horním rohu vyberte 5 minut pro časové intervaly, jak je vidět níže. Metriky také umožňují uživatelům vytvářet upozornění , díky kterým budou užitečnější než Přehledy.
Další kroky
Další informace o zlepšení výkonu databáze najdete v následujících článcích: