Azure Cosmos DB'de içgörülerle izleme ve hata ayıklama

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Cassandra Gremlin Tablo

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 İzleyici'den ö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 tutulur.

Azure portal içgörülerini görüntüleme

  1. Azure portal oturum açın ve Azure Cosmos DB hesabınıza gidin.

  2. Hesap ölçümlerinizi Ölçümler bölmesinden veya İçgörüler bölmesinden görüntüleyebilirsiniz.

    • Ölçüm: Bu bölme, düzenli aralıklarla toplanan sayısal ölçümler sağlar ve belirli bir zamanda sistemin bazı yönlerini açıklar. Örneğin, sunucu tarafı gecikme süresi ölçümünü, normalleştirilmiş istek birimi kullanım ölçümünü vb. görüntüleyebilir ve izleyebilirsiniz.

    • Anlayış: Bu bölme, Azure Cosmos DB için özelleştirilmiş bir izleme deneyimi sağlar. İçgörüler, Azure İzleyici'de toplanan ve hesabınız için toplu bir görünüm gösteren ölçümleri ve günlükleri kullanır.

  3. İçgörüler bölmesini açın. İçgörüler bölmesi varsayılan olarak hesabınızdaki her kapsayıcı için aktarım hızı, istekler, depolama, kullanılabilirlik, gecikme süresi, sistem ve yönetim işlemleri ölçümlerini gösterir. İçgörüleri görüntülemek istediğiniz Zaman Aralığı, Veritabanı ve Kapsayıcı'yı seçebilirsiniz. Genel Bakış sekmesi seçilen veritabanı ve kapsayıcı için RU/sn kullanımını, veri kullanımını, dizin kullanımını, kısıtlanmış istekleri ve normalleştirilmiş RU/sn tüketimini gösterir.

    Azure portal Azure Cosmos DB performans ölçümlerinin ekran görüntüsü.

  4. İçgörüler bölmesinde aşağıdaki ölçümler kullanılabilir:

    • İşleme hızı. Kapsayıcı için sağlanan aktarım hızı veya depolama kapasitesi aşıldığından, bu sekmede tüketilen veya başarısız olan toplam istek birimi sayısı (429 yanıt kodu) gösterilir.

    • İstekler. Bu sekme durum koduyla, işlem türüne göre işlenen isteklerin toplam sayısını ve başarısız isteklerin sayısını (429 yanıt kodu) gösterir. Kapsayıcı için sağlanan aktarım hızı veya depolama kapasitesi aşıldığında istekler başarısız olur.

    • Depolama alanı. Bu sekme, seçilen zaman aralığındaki verilerin ve dizin kullanımının boyutunu gösterir.

    • Kullanılabilirlik. Bu sekme, saat başına toplam istek sayısı üzerindeki başarılı isteklerin yüzdesini gösterir. Azure Cosmos DB SLA'ları başarı oranını tanımlar.

    • Gecikme süresi. Bu sekme, hesabınızın çalıştığı bölgede Azure Cosmos DB tarafından gözlemlenen okuma ve yazma gecikmesini gösterir. Coğrafi olarak çoğaltılmış bir hesap için bölgeler arasında gecikme süresini görselleştirebilirsiniz. Sunucu tarafı gecikme süresini farklı işlemlere göre de görüntüleyebilirsiniz. Bu ölçüm uçtan uca istek gecikme süresini temsil etmez.

    • Sistem. Bu sekme, birincil bölümün kaç meta veri isteğine hizmet ettiğini gösterir. Ayrıca kısıtlanan isteklerin tanımlanmasına da yardımcı olur.

    • Yönetim İşlemleri. Bu sekmede hesap oluşturma, silme, önemli güncelleştirmeler, ağ ve çoğaltma ayarları gibi hesap yönetimi etkinliklerine yönelik ölçümler gösterilir.

Aşağıdaki bölümlerde Azure Cosmos DB ölçümlerini kullanabileceğiniz yaygın senaryolar açıklanmaktadır.

Kaç isteğin başarılı olduğunu veya hataya neden olduğunu anlama

Başlamak için Azure portal 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ü, belirli bir 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ş

Durum koduna göre toplam istekleri, kısıtlanmış istekleri ve işlem türüne göre toplam istekleri gösteren ekran görüntüsü.

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.

RU/sn tüketimini gösteren Aktarım Hızı sekmesinin ekran görüntüsü.

Bu grafiğin yardımıyla sık erişimli bölüm olup olmadığını belirleyebilirsiniz. Eşit olmayan aktarım hızı dağılı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 veri kullanımına, dizin kullanımına ve belge kullanımına göre depolama dağılımını 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.

Depolama sekmesini vurgulayan İçgörüler bölmesinin ekran görüntüsü.

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 Ö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 ne kadar süreyle yürütüldüğünün ayrıntılarını sağlar. Uzun süre çalışan sorguların en yaygın kök nedeni taramalardır; 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 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üketimini isteyen meta verileri gösterir.

Sistem sekmesinde meta veri istekleri grafiğini vurgulayan İçgörüler bölmesinin ekran görüntüsü.

Sistem sekmesinde meta veri istekleri 429 grafiğini vurgulayan İçgörüler bölmesinin ekran görüntüsü.

Yukarıdaki Durum Koduna Göre Meta Veri İsteği grafiği, zaman aralığını artırdıkça daha büyük ayrıntı düzeyini artırmaya yönelik istekleri toplar. 5 dakikalık zaman kutusu için kullanabileceğiniz en büyük Zaman Aralığı 4 saattir. Belirli ayrıntı düzeyine sahip daha büyük bir zaman aralığındaki meta veri isteklerini izlemek için Azure Ölçümleri'ni kullanın. Yeni bir grafik oluşturun ve Meta veri istekleri ölçümü'ne tıklayın. Sağ üst köşede, aşağıda görüldüğü 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.

Bir hesap için meta veri isteklerini ve 5 dakikalık zaman ayrıntı düzeyini vurgulayan Ölçümler bölmesinin ekran görüntüsü.

Sonraki adımlar

Aşağıdaki makaleleri okuyarak veritabanı performansını geliştirme hakkında daha fazla bilgi edinmek isteyebilirsiniz: