Azure Cosmos DB'de içgörülerle izleme ve hata ayıklama
ŞUNLAR IÇIN GEÇERLIDIR: NoSQL
MongoDB
Cassandra
Gremlin
Masa
Azure Cosmos DB aktarım hızı, depolama, tutarlılık, kullanılabilirlik ve gecikme süresiyle ilgili içgörüler sağlar. Azure portalı bu ölçümlerin bir toplu görünümünü sağlar. Azure Cosmos DB ölçümlerini Azure İzleyici API'sinden de görüntüleyebilirsiniz. Kapsayıcı adı gibi ölçümlerin boyut değerleri büyük/küçük harfe duyarlı değildir. Bu nedenle, bu boyut değerleri üzerinde dize karşılaştırmaları yaparken büyük/küçük harfe duyarsız karşılaştırma kullanmanız gerekir. Azure izleyicisinden ölçümleri görüntülemeyi öğrenmek için bkz . Azure Cosmos DB'yi izleme.
Bu makalede yaygın kullanım örnekleri ve Azure Cosmos DB içgörülerinin bu sorunları analiz etmek ve hatalarını ayıklamak için nasıl kullanılabilebileceği açıklanmaktadır. Varsayılan olarak ölçüm içgörüleri beş dakikada bir toplanır ve yedi gün boyunca saklanır.
Aşağıdaki bölümlerde Azure Cosmos DB ölçümlerini kullanabileceğiniz yaygın senaryolar açıklanmaktadır.
Not
Ölçümlerdeki veritabanına veya koleksiyonlara göre filtreleme yaparken resourceName olarak "__Empty" veya "<Boş>" ifadesini görebilirsiniz. Bunun nedeni ölçüm verilerinin söz konusu istek için hesap düzeyinde toplanmasıdır. Bu nedenle, ölçüm değeri olarak ilişkili veritabanı veya koleksiyon yoktur.
Kaç isteğin başarılı olduğunu veya hataya neden olduğunu anlama
Başlamak için Azure portalına gidin ve İçgörüler bölmesine gidin. Bu bölmeden İstekler sekmesini açın. İstekler sekmesi, toplam isteklerin durum koduna ve işlem türüne göre segmentlere ayrıldığı bir grafik gösterir. HTTP durum kodları hakkında daha fazla bilgi için bkz . Azure Cosmos DB için HTTP durum kodları.
En yaygın hata durum kodu 429'dur (hız sınırlama/azaltma). Bu hata, Azure Cosmos DB'ye yapılan isteklerin sağlanan aktarım hızının üzerinde olduğu anlamına gelir. Bu sorunun en yaygın çözümü, verilen koleksiyon için RU'ların ölçeğini genişletmektir. Daha fazla bilgi için bkz . Azure Cosmos DB'de sağlanan aktarım hızına giriş
Bölüm anahtarı aralığına göre aktarım hızı tüketimini belirleme
Bölüm anahtarlarınızın iyi bir kardinalitesine sahip olmak, ölçeklenebilir tüm uygulamalar için önemlidir. Bölüm anahtarı aralığı kimliklerine göre ayrılmış bölümlenmiş kapsayıcıların aktarım hızı dağılımını belirlemek için İçgörüler bölmesine gidin. Aktarım Hızı sekmesini açın. Farklı bölüm anahtarı aralıklarında normalleştirilmiş RU/sn tüketimi grafikte gösterilir.
Bu grafiğin yardımıyla sık erişimli bölüm olup olmadığını belirleyebilirsiniz. PartitionKeyRangeID'ler fiziksel bölümlere karşılık gelir. Normalleştirilmiş RU Tüketimi ölçümü, bir veritabanı veya kapsayıcıda sağlanan aktarım hızının kullanımını ölçmeye yardımcı olan %0 ile %100 arasında bir değerdir. Eşit olmayan aktarım hızı dağıtımı sık erişimli bölümlere neden olabilir ve bu da isteklerin kısıtlanmasıyla sonuçlanabilir ve yeniden bölümleme gerektirebilir. Dağıtımda dengesizliklere neden olan bölüm anahtarını belirledikten sonra kapsayıcınızı daha dağıtılmış bir bölüm anahtarıyla yeniden bölümlemeniz gerekebilir. Azure Cosmos DB'de bölümleme hakkında daha fazla bilgi için bkz . Azure Cosmos DB'de bölümleme ve yatay ölçeklendirme.
Veri ve dizin kullanımını belirleme
Bölümlenmiş kapsayıcıların depolama dağılımını veri kullanımına, dizin kullanımına ve belge kullanımına göre belirlemek önemlidir. Dizin kullanımını en aza indirip veri kullanımını en üst düzeye çıkarabilir ve sorgularınızı iyileştirebilirsiniz. Bu verileri almak için İçgörüler bölmesine gidin ve Depolama sekmesini açın.
Veri boyutunu dizin boyutuyla karşılaştırma
Azure Cosmos DB'de toplam tüketilen depolama alanı hem veri boyutunun hem de dizin boyutunun birleşimidir. Dizin boyutu genellikle veri boyutunun bir bölümüdür. Daha fazla bilgi edinmek için Dizin boyutu makalesine bakın. Azure portalındaki Ölçümler bölmesinde, Depolama sekmesi veri ve dizine göre depolama tüketiminin dökümünü gösterir.
// 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);
Dizin alanından tasarruf etmek isterseniz dizin oluşturma ilkesini ayarlayabilirsiniz.
Yavaş sorgularda hata ayıklama
Azure Cosmos DB, NoSQL SDK'ları için API'de sorgu yürütme istatistikleri sağlar.
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 , sorgunun her bileşeninin yürütülmesinin ne kadar sürdüğüne ilişkin ayrıntılar sağlar. Uzun süre çalışan sorguların en yaygın kök nedeni taramadır ve bu da sorgunun dizinleri uygulayamadığı anlamına gelir. Bu sorun daha iyi bir filtre koşuluyla çözülebilir.
Denetim düzlemi isteklerini izleme
Azure Cosmos DB, ardışık 5 dakikalık aralıklarla yapılabilecek meta veri isteği sayısına sınırlar uygular. Bu sınırları aşan denetim düzlemi istekleri azaltmayla karşılaşabilir. Meta veri istekleri bazı durumlarda, bir hesabın tüm meta verilerini içeren bir hesapta aktarım hızını master partition
tüketebilir. Aktarım hızı miktarını aşan denetim düzlemi isteklerinde hız sınırlaması (429s) yaşanır.
Başlamak için Azure portalına gidin ve İçgörüler bölmesine gidin. Bu bölmeden Sistem sekmesini açın. Sistem sekmesinde iki grafik gösterilir. Bir hesap için tüm meta veri isteklerini gösteren. İkincisi, bir hesabın meta verilerini depolayan hesabın master partition
aktarım hızı tüketiminin meta veri isteklerini gösterir.
Yukarıdaki Durum Koduna Göre Meta Veri İsteği grafiği, siz Zaman Aralığını artırdıkça istekleri daha büyük ayrıntı düzeyinde toplar. 5 dakikalık zaman aralığı için kullanabileceğiniz en büyük Zaman Aralığı 4 saattir. Belirli bir ayrıntı düzeyine sahip daha büyük bir zaman aralığında meta veri isteklerini izlemek için Azure Ölçümleri'ni kullanın. Yeni bir grafik oluşturun ve Meta veri istekleri ölçümünü seçin. Sağ üst köşede, aşağıda gösterildiği gibi Zaman ayrıntı düzeyi için 5 dakika seçin. Ölçümler, kullanıcıların bu ölçümler üzerinde Uyarılar oluşturmasına da olanak sağlar ve bu da onları İçgörüler'den daha kullanışlı hale getirir.
Sonraki adımlar
Aşağıdaki makaleleri okuyarak veritabanı performansını geliştirme hakkında daha fazla bilgi edinmek isteyebilirsiniz: