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.
Important
Bu makaledeki performans ipuçları yalnızca Azure Cosmos DB Java SDK v4 içindir. Daha fazla bilgi için Azure Cosmos DB Java SDK v4 Sürüm notları, Maven deposu ve Azure Cosmos DB Java SDK v4 sorun giderme kılavuzunu görüntüleyin. Şu anda v4'ten daha eski bir sürüm kullanıyorsanız v4'e yükseltmeyle ilgili yardım için Bkz. Azure Cosmos DB Java SDK v4'e geçiş kılavuzu.
Azure Cosmos DB, garantili gecikme süresi ve aktarım hızı ile sorunsuz bir şekilde ölçeklendirilen hızlı ve esnek bir dağıtılmış veritabanıdır. Azure Cosmos DB ile veritabanınızı ölçeklendirmek için büyük mimari değişiklikleri yapmanız veya karmaşık kod yazmanız gerekmez. Ölçeklendirmeyi artırmak veya azaltmak, tek bir API çağrısı veya SDK yöntem çağrısı yapmak kadar kolaydır. Ancak Azure Cosmos DB'ye ağ çağrıları aracılığıyla erişildiğinden, Azure Cosmos DB Java SDK v4 kullanırken en yüksek performansı elde etmek için ayarlayabileceğiniz bağlantı yapılandırmaları vardır.
Bağlantı yapılandırması
Note
Azure Cosmos DB Java SDK v4'te, çoğu iş yüküyle veritabanı performansını geliştirmek için en iyi seçenek Doğrudan modudur .
Farklı bağlantı seçenekleri hakkında daha fazla bilgi edinmek için bağlantı modları makalesine bakın.
Doğrudan bağlantı modu
Java SDK varsayılan bağlantı modu doğrudandır. Doğrudan mod Azure Cosmos DB istekleri, Azure Cosmos DB Java SDK v4 kullanılırken TCP üzerinden yapılır. Dahili Doğrudan modu, ağ kaynaklarını dinamik olarak yönetmek ve en iyi performansı elde etmek için özel bir mimari kullanır. Doğrudan Mod'da kullanılan istemci tarafı mimarisi, Azure Cosmos DB çoğaltmalarına öngörülebilir ağ kullanımı ve çoklu erişim sağlar. Mimari hakkında daha fazla bilgi edinmek için bkz. Doğrudan mod bağlantı mimarisi
Burada gösterildiği gibi directMode() yöntemini kullanarak istemci oluşturucusunda bağlantı modunu yapılandırabilirsiniz. Varsayılan ayarlarla doğrudan modu yapılandırmak için directMode() yöntemini argümansız çağırabilirsiniz. Doğrudan mod bağlantı ayarlarını özelleştirmek için DirectConnectionConfig'i API'ye directMode() geçirin.
Java SDK V4 (Maven com.azure::azure-cosmos) Async API
/* Direct mode, default settings */
CosmosAsyncClient clientDirectDefault = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.directMode()
.buildAsyncClient();
/* Direct mode, custom settings */
DirectConnectionConfig directConnectionConfig = DirectConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
directConnectionConfig.setMaxConnectionsPerEndpoint(130);
directConnectionConfig.setIdleConnectionTimeout(Duration.ZERO);
CosmosAsyncClient clientDirectCustom = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.directMode(directConnectionConfig)
.buildAsyncClient();
/* Gateway mode, default settings */
CosmosAsyncClient clientGatewayDefault = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.gatewayMode()
.buildAsyncClient();
/* Gateway mode, custom settings */
GatewayConnectionConfig gatewayConnectionConfig = GatewayConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
gatewayConnectionConfig.setProxy(new ProxyOptions(ProxyOptions.Type.HTTP, InetSocketAddress.createUnresolved("your.proxy.addr",80)));
gatewayConnectionConfig.setMaxConnectionPoolSize(1000);
CosmosAsyncClient clientGatewayCustom = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.gatewayMode(gatewayConnectionConfig)
.buildAsyncClient();
/* No connection mode, defaults to Direct mode with default settings */
CosmosAsyncClient clientDefault = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.buildAsyncClient();
Doğrudan bağlantı modunu özelleştirme
Doğrudan mod davranışı istenmiyorsa, bir DirectConnectionConfig örneği oluşturun ve özelliklerini özelleştirin, ardından özelleştirilmiş özellik örneğini Azure Cosmos DB istemci oluşturucusunda directMode() yöntemine geçirin.
Bu yapılandırma ayarları, daha önce açıklanan temel Doğrudan mod mimarisinin davranışını denetler.
İlk adım olarak, burada aşağıdaki önerilen yapılandırma ayarlarını kullanın. Bu DirectConnectionConfig seçenekleri, SDK performansını beklenmeyen yollarla etkileyebilecek gelişmiş yapılandırma ayarlarıdır; Kullanıcıların, dengeleri anlama konusunda rahat hissetmedikleri ve gerekli olmadığı sürece bunları değiştirmekten kaçınmalarını öneririz. Bu konuda sorunlarla karşılaşırsanız Azure Cosmos DB ekibine başvurun.
| Yapılandırma seçeneği | Varsayılan | Recommended | Details |
|---|---|---|---|
| Boşta bağlantı zaman aşımı süresi | "PT0" (SIFIR) | "PT0" (SIFIR) | Bu, bir uç noktaya/arka uç düğümüne ( çoğaltmayı temsil eden) tek bir bağlantı için boşta bağlantı zaman aşımı süresini temsil eder. Varsayılan olarak, SDK arka uç düğümlerine yönelik boşta bağlantıları otomatik olarak kapatmaz. |
| idleEndpointTimeout | "PT1H" | "PT1H" | Bu, bir uç nokta/arka uç düğümü (bir replikayı temsil eder) için bağlantı havuzunun boşta bağlantı zaman aşımı süresini temsil eder. Varsayılan olarak, belirli bir uç noktaya/arka uç düğümüne gelen istek yoksa SDK, ağ kaynaklarından ve G/Ç maliyetinden tasarruf etmek için 1 saat sonra bu uç nokta/arka uç düğümüne bağlantı havuzundaki tüm bağlantıları kapatır. Seyrek veya düzensiz trafik düzeni için sdk'nın bağlantıları sık sık açması gerekmeyecek şekilde bu değeri 6 saat, 12 saat, hatta 24 saat gibi daha yüksek bir sayıya ayarlamanızı öneririz. Ancak bu, ağ kaynaklarını kullanır ve herhangi bir zamanda açık tutulan daha fazla bağlantı sayısına sahip olur. Bu SIFIR olarak ayarlanırsa boşta uç nokta denetimi devre dışı bırakılır. |
| uç nokta başına maksimum bağlantı | "130" | "130" | Bu, bir uç nokta/arka uç düğümü için bağlantı havuzunun üst sınır boyutunu temsil eder (bir çoğaltmayı temsil eder). SDK, isteğe bağlı olarak ve gelen eşzamanlı isteklere göre uç nokta/arka uç düğümüne bağlantılar oluşturur. Varsayılan olarak, gerekirse SDK bir uç nokta/arka uç düğümüne en fazla 130 bağlantı oluşturur. (NOT: SDK bu 130 bağlantıyı önceden oluşturmaz). |
| Bağlantı Başına Maksimum İstekler | "30" | "30" | Bu, belirli bir uç nokta/arka uç düğümü (bir çoğaltmayı temsil eden) için tek bir bağlantıda kuyruğa alınabilecek en fazla istek sayısının üst sınır boyutunu temsil eder. SDK, istekleri isteğe bağlı olarak ve gelen eşzamanlı isteklere göre bir uç nokta/arka uç düğümüne tek bir bağlantı için kuyruğa alır. Varsayılan olarak, gerekirse SDK belirli bir uç nokta/arka uç düğümü için tek bir bağlantıya en fazla 30 istek kuyruğa alır. (NOT: SDK bu 30 isteği başlangıçta tek bir bağlantıya kuyruğa almaz). |
| bağlantı zaman aşımı | "PT5S" | "~PT1S" | Bu, bir uç nokta/arka uç düğümüyle kurulacak tek bir bağlantı için bağlantı kurma zaman aşımı süresini temsil eder. Varsayılan olarak SDK, hata oluşturmadan önce bağlantı kurulması için en fazla 5 saniye bekler. TCP bağlantısı kurulumu, bağlantı kurma süresinin gecikme süresini artıran çok adımlı el sıkışması kullanır, bu nedenle müşterilerin bu değeri ağ bant genişliğine ve ortam ayarlarına göre ayarlamaları önerilir. NOT: ~PT1S'nin bu önerisi yalnızca Cosmos DB hesaplarının birlikte bulunan bölgelerine dağıtılan uygulamalara yöneliktir. |
| networkRequestTimeout | "PT5S" | "PT5S" | Bu, tek bir isteğin ağ zaman aşımı süresini temsil eder. İstek ağ bağlantısına yazıldıktan sonra SDK bu süre boyunca hizmet yanıtını kullanmak için en fazla bekler. SDK yalnızca 1 saniye (dk) ile 10 saniye (maksimum) arasında değerlere izin verir. Değerin çok yüksek ayarlanması daha az yeniden denemeye neden olabilir ve yeniden denemelerin başarı şansını azaltabilir. |
Ağ Geçidi Bağlantı modu
Veritabanı ve kapsayıcı CRUD gibi denetim düzlemi işlemleri her zaman Ağ Geçidi modunu kullanır. Kullanıcı veri düzlemi işlemleri için Doğrudan modu yapılandırmış olsa bile, denetim düzlemi ve meta veri işlemleri varsayılan Ağ Geçidi modu ayarlarını kullanır. Bu çoğu kullanıcıya uygundur. Ancak, veri düzlemi işlemleri için Doğrudan modu ve Denetim Düzlemi Ağ Geçidi Modu'nun parametrelerinin ayar esnekliği isteyen kullanıcılar aşağıdaki directMode() geçersiz kılmasını kullanabilir:
Java SDK V4 (Maven com.azure::azure-cosmos) Async API
/* Independent customization of Direct mode data plane and Gateway mode control plane */
DirectConnectionConfig directConnectionConfig = DirectConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
directConnectionConfig.setMaxConnectionsPerEndpoint(130);
directConnectionConfig.setIdleConnectionTimeout(Duration.ZERO);
GatewayConnectionConfig gatewayConnectionConfig = GatewayConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
gatewayConnectionConfig.setProxy(new ProxyOptions(ProxyOptions.Type.HTTP, InetSocketAddress.createUnresolved("your.proxy.addr",80)));
gatewayConnectionConfig.setMaxConnectionPoolSize(1000);
CosmosAsyncClient clientDirectCustom = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.directMode(directConnectionConfig,gatewayConnectionConfig)
.buildAsyncClient();
Ağ geçidi bağlantı modunu özelleştirme
Hatalı Ağ Geçidi modu davranışı istenmiyorsa, bir GatewayConnectionConfig örneği oluşturun ve özelliklerini özelleştirin, ardından özelleştirilmiş özellik örneğini Azure Cosmos DB istemci oluşturucusunda directMode() geçersiz kılma yöntemine veya gatewayMode() yöntemine geçirin.
İlk adım olarak, burada aşağıdaki önerilen yapılandırma ayarlarını kullanın. Bu GatewayConnectionConfig seçenekleri, SDK performansını beklenmeyen yollarla etkileyebilecek gelişmiş yapılandırma ayarlarıdır; Kullanıcıların, dengeleri anlama konusunda rahat hissetmedikleri ve gerekli olmadığı sürece bunları değiştirmekten kaçınmalarını öneririz. Bu konuda sorunlarla karşılaşırsanız Azure Cosmos DB ekibine başvurun.
| Yapılandırma seçeneği | Varsayılan | Recommended | Details |
|---|---|---|---|
| MaksimumBağlantıHavuzuBoyutu | "1000" | "1000" | Bu, temel http istemcisi için bağlantı havuzu boyutunun üst sınır boyutunu temsil eder. Bu, SDK'nın Ağ Geçidi moduna giden istekler için oluşturduğu en fazla bağlantı sayısıdır. SDK, ağ geçidine istek gönderirken bu bağlantıları yeniden kullanır. |
| Boşta bağlantı zaman aşımı süresi | "PT60S" | "PT60S" | Bu, Ağ Geçidine tek bir bağlantı için boşta bağlantı zaman aşımı süresini temsil eder. Bu süreden sonra bağlantı otomatik olarak kapatılır ve bağlantı havuzundan kaldırılır. |
Sonraki Adımlar
Java SDK'sına yönelik performans ipuçları hakkında daha fazla bilgi edinmek için bkz . Azure Cosmos DB Java SDK v4 için performans ipuçları.
Uygulamanızı ölçek ve yüksek performans için tasarlama hakkında daha fazla bilgi edinmek için bkz. Azure Cosmos DB içinde bölümleme ve ö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.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdekleri veya vCPU'ları kullanarak istek birimlerini tahmin etme hakkında bilgi edinin
- 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 istek birimlerini tahmin etme hakkında bilgi edinin.