Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Cosmos DB .NET SDK'sını kullanmaya yönelik en iyi yöntemler açıklanmaktadır. Bu uygulamaları izleyerek gecikme sürenizi, kullanılabilirliğinizi artırmanıza ve genel performansı artırmanıza yardımcı olabilirsiniz.
Azure Cosmos DB mühendisinin .NET SDK'sını kullanma hakkında daha fazla bilgi edinmek için aşağıdaki videoyu izleyin!
Checklist
| Onay kutusu | Konu | Description |
|---|---|---|
| SDK sürümü | En iyi performans için her zaman Azure Cosmos DB SDK'sının en son sürümünü kullanın. | |
| Singleton istemcisi | Daha iyi performans için uygulamanızın ömrü boyunca tek bir CosmosClient kullanın. |
|
| Bölgeler | Gecikme süresini azaltmak için mümkün olduğunca uygulamanızı Azure Cosmos DB hesabınızla aynı Azure bölgesinde çalıştırdığınızdan emin olun. En iyi kullanılabilirlik için 2-4 bölgeyi etkinleştirin ve hesaplarınızı birden çok bölgede çoğaltın. Üretim iş yükleri için hizmet tarafından yönetilen yük devretmeyi etkinleştirin. Bu yapılandırma olmadığında, bölge bağlantısının eksikliği nedeniyle el ile yük devretme başarılı olmaz; bu durum, yazma bölgesi kesintisinin tüm süresi boyunca hesapta yazma erişilebilirliği kaybına neden olur. .NET SDK'sını kullanarak birden çok bölge eklemeyi öğrenmek için bu öğreticiye bakın. | |
| Kullanılabilirlik ve yük devretmeler | Tercih edilen bölgeler listesini kullanarak v3 SDK'sında ApplicationPreferredRegions veya ApplicationRegion ve v2 SDK'sında PreferredLocations değerlerini ayarlayın. Yük devretmeler sırasında yazma işlemleri geçerli yazma bölgesine, tüm okumalar ise tercih ettiğiniz bölgeler listesindeki ilk bölgeye gönderilir. Bölgesel yük devretme mekaniği hakkında daha fazla bilgi için kullanılabilirlik sorunlarını giderme kılavuzuna bakın. | |
| İşlemci (CPU) | İstemci makinenizde kaynak olmaması nedeniyle bağlantı/kullanılabilirlik sorunlarıyla karşılaşabilirsiniz. Azure Cosmos DB istemcisini çalıştıran düğümlerde CPU kullanım oranını izleyin, ve eğer kullanım yüksekse, ölçeği artırın veya genişletin. | |
| Barındırma | Mümkün olduğunda en iyi performans için Windows 64 bit konak işlemeyi kullanın. Doğrudan mod gecikmeye duyarlı üretim iş yükleri için mümkün olduğunca en az 4 çekirdekli ve 8 GB bellekli VM'ler kullanmanızı kesinlikle öneririz. | |
| Bağlantı modları | En iyi performans için doğrudan modu kullanın. Yönergeler için V3 SDK belgelerine veya V2 SDK belgelerine bakın. | |
| Networking | Uygulamanızı çalıştırmak için bir sanal makine kullanıyorsanız, yüksek trafik nedeniyle oluşan performans sorunlarına yardımcı olmak ve gecikme süresini veya CPU değişimlerini azaltmak için VM'nizde Hızlandırılmış Ağ'ı etkinleştirin. Ayrıca maksimum CPU kullanımının 70%altında olduğu üst düzey bir sanal makine kullanmayı da düşünebilirsiniz. | |
| Geçici bağlantı noktası tükenmesi | Seyrek veya düzensiz bağlantılar için, IdleConnectionTimeout ve PortReuseMode, PrivatePortPool olarak ayarlarız.
IdleConnectionTimeout özelliği, kullanılmayan bağlantıların kapatıldığı süreyi denetlemeye yardımcı olur. Bu, kullanılmayan bağlantı sayısını azaltır. Varsayılan olarak, boştaki bağlantılar süresiz olarak açık tutulur. Değer kümesi 10 dakikadan büyük veya buna eşit olmalıdır. 20 dakika ile 24 saat arasında değerler önerilir. özelliği, PortReuseMode SDK'nın çeşitli Azure Cosmos DB hedef uç noktaları için kısa ömürlü bağlantı noktalarının küçük bir havuzunu kullanmasına olanak tanır. |
|
| Async/await kullan | Çağrıları engellemekten kaçının: Task.Result, Task.Wait, ve Task.GetAwaiter().GetResult(). Tüm çağrı yığını async/await desenlerinden yararlanmak için eşzamanlı çalışır. Birçok senkronize engelleme çağrısı iş parçacığı havuzu tükenmesine ve yanıt sürelerinin düşmesine yol açar. |
|
| Uçtan uca zaman aşımları | Uçtan uca zaman aşımlarını almak için hem RequestTimeout hem de CancellationToken parametrelerini kullanmanız gerekir. Daha fazla bilgi için zaman aşımı sorun giderme kılavuzumuza bakın. |
|
| Mantığı yeniden deneme | Hangi hataların yeniden denendiği ve SDK'lar tarafından hangilerinin yeniden denendiği hakkında daha fazla bilgi için bkz . tasarım kılavuzu. Birden çok bölgeyle yapılandırılmış hesaplar için SDK'nın diğer bölgelerde otomatik olarak yeniden deneme yaptığı bazı senaryolar vardır. İçin. NET'e özgü uygulama ayrıntıları, bkz. SDK kaynak deposu. | |
| Veritabanı/koleksiyon adlarını önbelleğe alma | Veritabanlarınızın ve kapsayıcılarınızın adlarını yapılandırmadan alın veya başlangıçta önbelleğe alın.
ReadDatabaseAsync veya ReadDocumentCollectionAsync ve CreateDatabaseQuery veya CreateDocumentCollectionQuery gibi çağrılar, sistem tarafından ayrılmış olan RU sınırından tüketim yapan hizmete meta veri çağrıları ile sonuçlanır.
CreateIfNotExist ayrıca veritabanını ayarlamak için yalnızca bir kez kullanılmalıdır. Genel olarak, bu işlemlerin seyrek gerçekleştirilmesi gerekir. |
|
| Toplu destek | Gecikme süresi için iyileştirme yapmanız gerekmeyebilecek senaryolarda, büyük hacimli verilerin dökümünü almak için toplu desteği etkinleştirmenizi öneririz. | |
| Paralel sorgular | Azure Cosmos DB SDK'sı, sorgularınızda daha iyi gecikme süresi ve aktarım hızı için sorguları paralel çalıştırmayı destekler.
MaxConcurrency içindeki QueryRequestsOptions özelliğini, sahip olduğunuz bölüm sayısına ayarlamanızı öneririz. Bölüm sayısını bilmiyorsanız, en iyi gecikme süresini sağlayan komutunu kullanarak int.MaxValuebaşlayın. Ardından, yüksek CPU sorunlarını önlemek için ortamın kaynak kısıtlamalarına uyana kadar sayıyı azaltın. Ayrıca, MaxBufferedItemCount değerini önceden getirilen sonuçların sayısını sınırlamak için beklenen döndürülecek sonuç sayısına ayarlayın. |
|
| Performans testi düşüşleri | Uygulamanızda test yaparken, RetryAfter aralıklarla geri çekilme stratejilerini uygulamanız gerekir. Geri çekilme stratejisine uymak, yeniden denemeler arasında bekleme sürenizi en aza indirmenize yardımcı olur. |
|
| Dizinleme | Azure Cosmos DB dizin oluşturma ilkesi, dizin oluşturma yollarını (IndexingPolicy.IncludedPaths ve IndexingPolicy.ExcludedPaths) kullanarak hangi belge yollarının dizine ekleneceğini veya dizin oluşturmanın dışında tutulacağını belirtmenize de olanak tanır. Daha hızlı yazma işlemleri için kullanılmayan yolları dizinlemenin dışında tuttuğunuzdan emin olun. SDK kullanarak dizin oluşturma hakkında daha fazla bilgi için bkz. Dizin oluşturma ilkesi. |
|
| Belge boyutu | Belirtilen işlemin istek ücreti doğrudan belgenin boyutuyla ilişkilidir. Büyük belgelerdeki işlemler daha küçük belgelerdeki işlemlerden daha pahalı olduğundan, belgelerinizin boyutunu azaltmanızı öneririz. | |
| İş parçacığı/görev sayısını artırın | Azure Cosmos DB'ye yapılan çağrılar ağ üzerinden yapıldığından, istemci uygulamasının istekler arasında beklemeye en az zaman harcaması için isteklerinizin eşzamanlılık derecesini değiştirmeniz gerekebilir. Örneğin, .NET Görev Paralel Kitaplığı kullanıyorsanız, Azure Cosmos DB'den okuma yapan veya Azure Cosmos DB'ye yazma yapan yüzlerce görev oluşturun. | |
| Sorgu ölçümlerini etkinleştirme | Arka uç sorgularınızın yürütmelerini daha detaylı kaydetmek için, .NET SDK'mızı kullanarak SQL Sorgu Metriklerini etkinleştirebilirsiniz. SQL Sorgu Ölçümlerini toplama hakkında daha fazla bilgi için bkz . sorgu ölçümleri ve performansı. | |
| SDK kaydı | Belirgin senaryolar için, örneğin istisnalar veya isteklerin beklenen gecikme süresinin ötesine geçtiği durumlar, SDK tanılama bilgilerini günlük olarak kaydedin. | |
| DefaultTraceListener |
DefaultTraceListener üretim ortamlarında yüksek CPU kullanımı ve G/Ç darboğazlarına neden olarak performans sorunları oluşturur. En son SDK sürümlerini kullandığınızdan emin olun veya DefaultTraceListener'ı uygulamanızdan kaldırın. |
|
| Tanımlayıcılarda özel karakterler kullanmaktan kaçının | Bazı karakterler kısıtlanmıştır ve bazı tanımlayıcılarda kullanılamaz: /, \, ?, #. Genel öneri, beklenmeyen davranışlardan kaçınmak için tanımlayıcılarda veritabanı adı, koleksiyon adı, öğe kimliği veya bölüm anahtarı gibi özel karakterler kullanılmamasıdır. |
Newtonsoft.Json Bağımlılıklarını Yönetme
Overview
Azure Cosmos DB .NET SDK'sının JSON serileştirme işlemlerine bağımlılığı Newtonsoft.Json vardır.
Bu bağımlılık otomatik olarak yönetilmiyor ; projenize doğrudan bağımlılık olarak açıkça eklemeniz Newtonsoft.Json gerekir.
SDK, bilinen bir güvenlik açığı olan Newtonsoft.Json 10.x'e karşı dahili olarak derler. SDK teknik olarak 10.x ile uyumludur ve SDK'nın Newtonsoft.Json kullanımı bildirilen güvenlik sorununa açık olmasa da, olası güvenlik sorunlarını veya çakışmalarını önlemek için 13.0.3 veya üzeri bir sürümü kullanmanızı öneririz . 13.x sürümleri hataya neden olan değişiklikleri içerir, ancak SDK'nın kullanım desenleri bu değişikliklerle uyumludur.
Important
Bu bağımlılıkSystem.Text.Json aracılığıyla kullanıcı tanımlı türler için kullanılırken bile gereklidir çünkü SDK'nın iç işlemleri sistem türleri için hala Newtonsoft.Json kullanır.
Önerilen Yapılandırma
Azure Cosmos DB .NET SDK v3 kullanırken her zaman doğrudan bağımlılık olarak 13.0.3 veya üzeri bir sürümü açıkça ekleyinNewtonsoft.Json. Bilinen güvenlik açıklarından dolayı 10.x sürümünü kullanmayın.
Standart .csproj Projeleri için
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Cosmos" Version="3.47.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
</ItemGroup>
Merkezi Paket Yönetimi Kullanan Projeler için
Projeniz kullanıyorsa Directory.Packages.props:
<Project>
<ItemGroup>
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.47.0" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
</ItemGroup>
</Project>
Sürüm Çakışmaları Sorunlarını Giderme
Eksik Newtonsoft.Json Referansı
Şöyle bir derleme hatasıyla karşılaşırsanız:
The Newtonsoft.Json package must be explicitly referenced with version >= 10.0.2. Please add a reference to Newtonsoft.Json or set the 'AzureCosmosDisableNewtonsoftJsonCheck' property to 'true' to bypass this check.
Bu hata, bağımlılığın düzgün yapılandırıldığından emin olmak için Cosmos DB SDK'sının derleme hedefleri tarafından kasıtlı olarak oluşturulur.
Uygulamalar için Çözüm:
Yukarıdaki Önerilen Yapılandırma bölümünde gösterildiği gibi Newtonsoft.Json dosyasına açık bir başvuru ekleyin.
Kitaplıklar için çözüm:
Bir kitaplık oluşturuyorsanız (uygulama değil) ve Newtonsoft.Json bağımlılığını kitaplığınızın tüketicilerine ertelemek istiyorsanız, içinde MSBuild özelliğini ayarlayarak bu denetimi atlayabilirsiniz .csproj:
<PropertyGroup>
<AzureCosmosDisableNewtonsoftJsonCheck>true</AzureCosmosDisableNewtonsoftJsonCheck>
</PropertyGroup>
Warning
Bu atlama yalnızca son kullanıcıların Newtonsoft.Json bağımlılığını sağlayacağı kitaplıklar oluştururken kullanın. Uygulamalar için her zaman belirgin referansı ekleyin.
Paket Sürümü Çakışmaları
Şu gibi derleme hatalarıyla karşılaşırsanız:
error NU1109: Detected package downgrade: Newtonsoft.Json from 13.0.4 to centrally defined 13.0.3
Çözüm:
Hangi paketlerin daha yeni sürümlere ihtiyacı olduğunu denetleyerek gerekli sürümü belirleyin:
dotnet list package --include-transitive | Select-String "Newtonsoft.Json"Merkezi paket sürümünüzü gerekli en yüksek sürümle eşleşecek veya bu sürümü aşacak şekilde güncelleştirin:
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />Temizleme ve yeniden oluşturma:
dotnet clean dotnet restore dotnet build
Sürüm Uyumluluğu
Aşağıdaki tabloda, her Cosmos DB SDK sürümü için önerilen en düşük güvenli Newtonsoft.Json sürümleri gösterilmektedir. SDK teknik olarak 10.x ile çalışasa da, bu sürümler güvenlik açıkları nedeniyle hiçbir zaman kullanılmamalıdır.
| Cosmos DB SDK Sürümü | En Düşük Güvenli Sürüm | Recommended |
|---|---|---|
| 3.47.0+ | 13.0.3 | 13.0.4 |
| 3.54.0+ | 13.0.4 | 13.0.4 |
Tip
.NET Aspire 13.0.0 veya üzerini kullanırken Aspire'in Azure bileşenleriyle çakışmaları önlemek için sürüm 13.0.4'te olduğundan emin olun Newtonsoft.Json .
En İyi Uygulamalar
- Her zaman doğrudan bağımlılık olarak ekle - SDK bu bağımlılığı sizin için otomatik olarak yönetmez
- Sürüm 13.0.3 veya üzerini kullanma - Bilinen güvenlik açıkları nedeniyle teknik uyumluluğa rağmen asla 10.x kullanmayın
-
System.Text.Json ile bile gereklidir - SDK sistem türleri için dahili olarak kullandığından, kullanırken bile
UseSystemTextJsonSerializerWithOptionsNewtonsoft.Json eklemeniz gerekir. - Sürümü açıkça sabitleyin - Geçişli bağımlılık çözümlemesine güvenmeyin
- Uyarıları izleme - NuGet paketi sürüm düşürme uyarılarını (NU1109) CI/CD işlem hatlarında hata olarak değerlendirin
Tanı bilgilerini kaydet
SDK'daki tüm yanıtlar, CosmosException dahil olmak üzere, bir Diagnostics özelliğine sahiptir. Bu özellik, yeniden denemeler veya geçici hatalar olup olmadığı dahil olmak üzere tek istekle ilgili tüm bilgileri kaydeder.
Tanılama bir dize olarak döndürülür. Farklı senaryolarda sorun gidermeye yönelik geliştirilmiş olduğundan, dize her sürümde değişir. SDK'nin her sürümünde, dize formatında köklü değişiklikler olacaktır. Geri dönülemez değişikliklere yol açmamak için dizeyi ayrıştırmayın. Aşağıdaki kod örneğinde .NET SDK'sını kullanarak tanılama günlüklerinin nasıl okunduğu gösterilmektedir:
try
{
ItemResponse<Book> response = await this.Container.CreateItemAsync<Book>(item: testItem);
if (response.Diagnostics.GetClientElapsedTime() > ConfigurableSlowRequestTimeSpan)
{
// Log the response.Diagnostics.ToString() and add any additional info necessary to correlate to other logs
}
}
catch (CosmosException cosmosException)
{
// Log the full exception including the stack trace with: cosmosException.ToString()
// The Diagnostics can be logged separately if required with: cosmosException.Diagnostics.ToString()
}
// When using Stream APIs
ResponseMessage response = await this.Container.CreateItemStreamAsync(partitionKey, stream);
if (response.Diagnostics.GetClientElapsedTime() > ConfigurableSlowRequestTimeSpan || !response.IsSuccessStatusCode)
{
// Log the diagnostics and add any additional info necessary to correlate to other logs with: response.Diagnostics.ToString()
}
HTTP bağlantıları için en iyi yöntemler
.NET SDK'sı, yapılandırılan bağlantı modundan bağımsız olarak HTTP istekleri gerçekleştirmek için kullanır HttpClient .
- Doğrudan modda HTTP, meta veri işlemleri için kullanılır
- Ağ geçidi modunda HTTP hem veri düzlemi hem de meta veri işlemleri için kullanılır
HttpClient'ın temellerinden biri, havuzdaki bağlantı ömrünü HttpClient hesabınızdaki DNS değişikliklerine tepki verebildiğinden emin olmaktır. Havuza alınan bağlantılar açık tutuldukları sürece, DNS değişikliklerine tepki vermezler. Bu ayar havuza alınan bağlantıların düzenli aralıklarla kapatılmasını zorlayarak uygulamanızın DNS değişikliklerine tepki vermesini sağlar. Önerimiz, sık sık yeni bağlantılar oluşturmanın performans etkisini dengelemek ve DNS değişikliklerine (kullanılabilirlik) tepki vermek için bu değeri bağlantı modunuza ve iş yükünüze göre özelleştirmenizdir. 5 dakikalık bir değer, özellikle Ağ Geçidi modu için, performansı etkilerse artırılabilecek iyi bir başlangıç olabilir.
Özel HttpClient'ınızı aracılığıyla CosmosClientOptions.HttpClientFactoryekleyebilirsiniz, örneğin:
// Use a Singleton instance of the SocketsHttpHandler, which you can share across any HttpClient in your application
SocketsHttpHandler socketsHttpHandler = new SocketsHttpHandler();
// Customize this value based on desired DNS refresh timer
socketsHttpHandler.PooledConnectionLifetime = TimeSpan.FromMinutes(5);
CosmosClientOptions cosmosClientOptions = new CosmosClientOptions()
{
// Pass your customized SocketHttpHandler to be used by the CosmosClient
// Make sure `disposeHandler` is `false`
HttpClientFactory = () => new HttpClient(socketsHttpHandler, disposeHandler: false)
};
// Use a Singleton instance of the CosmosClient
return new CosmosClient("<connection-string>", cosmosClientOptions);
.NET bağımlılık ekleme kullanıyorsanız tekil işlemi basitleştirebilirsiniz:
SocketsHttpHandler socketsHttpHandler = new SocketsHttpHandler();
// Customize this value based on desired DNS refresh timer
socketsHttpHandler.PooledConnectionLifetime = TimeSpan.FromMinutes(5);
// Registering the Singleton SocketsHttpHandler lets you reuse it across any HttpClient in your application
services.AddSingleton<SocketsHttpHandler>(socketsHttpHandler);
// Use a Singleton instance of the CosmosClient
services.AddSingleton<CosmosClient>(serviceProvider =>
{
SocketsHttpHandler socketsHttpHandler = serviceProvider.GetRequiredService<SocketsHttpHandler>();
CosmosClientOptions cosmosClientOptions = new CosmosClientOptions()
{
HttpClientFactory = () => new HttpClient(socketsHttpHandler, disposeHandler: false)
};
return new CosmosClient("<connection-string>", cosmosClientOptions);
});
Ağ Geçidi modunu kullanırken en iyi yöntemler
Ağ geçidi modunu kullanırken konak başına artış System.Net MaxConnections . Azure Cosmos DB istekleri, Ağ Geçidi modunu kullandığınızda HTTPS/REST üzerinden yapılır. Ana bilgisayar adı veya IP adresi başına varsayılan bağlantı sınırına tabidir. İstemci kitaplığının Azure Cosmos DB'ye birden çok eşzamanlı bağlantı kullanabilmesi için daha yüksek bir değere (100 ile 1.000 arasında) ayarlamanız MaxConnections gerekebilir. .NET SDK 1.8.0 ve sonraki sürümlerinde için ServicePointManager.DefaultConnectionLimit varsayılan değer 50'dir. Değeri değiştirmek için daha yüksek bir değere ayarlayabilirsiniz CosmosClientOptions.GatewayModeMaxConnectionLimit .
Yoğun yazma iş yükleri için en iyi yöntemler
Oluşturma yükleri fazla olan iş yükleri için EnableContentResponseOnWrite istek seçeneğini false olarak ayarlayın. Hizmet artık oluşturulan veya güncelleştirilmiş kaynağı SDK'ya döndürmez. Normalde, uygulama oluşturulan nesneye sahip olduğundan, hizmetin nesneyi geri döndürmesine gerek yoktur. Başlık değerleri, istek ücreti gibi bilgilere hâlâ erişilebilir. İçerik yanıtını devre dışı bırakmak, SDK'nın artık bellek ayırmak veya yanıtın gövdesini seri hale getirmek zorunda kalmaması anlamına geleceği için performansın geliştirilmesine yardımcı olabilir. Ayrıca performansa daha fazla yardımcı olmak için ağ bant genişliği kullanımını azaltır.
Important
EnableContentResponseOnWrite ayarını false olarak değiştirmek, tetikleyici işleminden gelen yanıtı da devre dışı bırakır.
Çok kiracılı uygulamalar için en iyi yöntemler
Kullanımı, her kiracının aynı Azure Cosmos DB hesabı içindeki farklı bir veritabanı, kapsayıcı veya bölüm anahtarıyla temsil edildiği birden çok kiracıya dağıtan uygulamalar tek bir istemci örneği kullanmalıdır. Tek bir istemci örneği, bir hesaptaki tüm veritabanları, kapsayıcılar ve bölüm anahtarlarıyla etkileşimde bulunabilir ve tekil desen kullanmak en iyi uygulamadır.
Ancak, her kiracı farklı bir Azure Cosmos DB hesabıyla temsil edildiğinde, hesap başına ayrı bir istemci örneği oluşturmak gerekir. Tekil desen her istemci (uygulamanın ömrü boyunca her hesap için bir istemci) için geçerli olmaya devam eder, ancak kiracıların hacmi yüksekse, istemci sayısını yönetmek zor olabilir. Bağlantılar işlem ortamının sınırlarını aşabilir ve bağlantı sorunlarına neden olabilir.
Bu durumlarda şunlar önerilir:
- İşlem ortamının (CPU ve bağlantı kaynakları) sınırlamalarını anlayın. Mümkün olduğunda en az 4 çekirdekli ve 8 GB belleğe sahip VM'ler kullanmanızı öneririz.
- İşlem ortamının sınırlamalarına bağlı olarak, tek bir işlem örneğinin işleyebileceği istemci örneği sayısını (ve dolayısıyla kiracı sayısını) belirleyin. Seçilen bağlantı moduna bağlı olarak istemci başına açılan bağlantı sayısını tahmin edebilirsiniz.
- Örnekler arasında kiracı dağılımını değerlendirin. Her işlem örneği belirli bir sınırlı sayıda kiracıyı başarıyla işleyemiyorsa, kiracıların yük dengelemesi ve farklı işlem örneklerine yönlendirilmesi, kiracı sayısı arttıkça ölçeklendirmeye olanak tanır.
- Seyrek iş yükleri için, istemci örneklerini tutmak ve bir zaman penceresi içinde erişilmeyen kiracılar için istemcileri atmak için yapı olarak En Az Sık Kullanılan önbelleği kullanmayı göz önünde bulundurun. .NET'teki seçeneklerden biri, etkin olmayan istemcileri atmak için RegisterPostEvictionCallback'in ve etkin olmayan bağlantıların tutulacağı en uzun süreyi tanımlamak için SetSlidingExpiration'ın kullanılabildiği MemoryCacheEntryOptions seçeneğidir.
- Ağ bağlantısı sayısını azaltmak için Ağ Geçidi modunu kullanarak değerlendirin.
- Doğrudan modu kullanırken, kullanılmayan bağlantıları kapatmak ve bağlantı hacmini denetim altında tutmak için doğrudan mod yapılandırmasındaCosmosClientOptions.IdleTcpConnectionTimeout ve CosmosClientOptions.PortReuseMode ayarlarını yapmayı göz önünde bulundurun.
Sonraki Adımlar
- Karşılaştırma çerçevesiyle NoSQL için Azure Cosmos DB performansını ölçme
- Azure Cosmos DB'de bölümleme ve yatay ölçeklendirme
Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız, Azure Cosmos DB kapasite planlayıcısını kullanarak RU/sn değerlerini tahmin etme konusuna bakın.