Dostrajanie konfiguracji połączeń dla zestawu .NET SDK platformy .NET usługi Azure Cosmos DB w wersji 3
Ważne
Informacje przedstawione w tym artykule dotyczą tylko zestawu .NET SDK platformy .NET usługi Azure Cosmos DB w wersji 3. Aby uzyskać więcej informacji, zobacz tryby łączności zestawu SQL SDK SQL usługi Azure Cosmos DB z zestawem .NET SDK w wersji 3, repozytorium Nuget i przewodnik rozwiązywania problemów z zestawem .NET SDK usługi Azure Cosmos DB w wersji 3. Jeśli obecnie używasz starszej wersji niż 3, zobacz przewodnik Migrowanie do zestawu .NET SDK platformy .NET usługi Azure Cosmos DB w wersji 3 , aby uzyskać pomoc dotyczącą uaktualniania do wersji 3.
Azure Cosmos DB to szybka i elastyczna rozproszona baza danych, która bezproblemowo skaluje się z gwarantowanym opóźnieniem i przepływnością. Nie musisz wprowadzać istotnych zmian architektury ani pisać złożonego kodu w celu skalowania bazy danych za pomocą usługi Azure Cosmos DB. Skalowanie w górę i w dół jest tak proste, jak tworzenie pojedynczego wywołania interfejsu API lub wywołania metody zestawu SDK. Jednak ponieważ usługa Azure Cosmos DB jest dostępna za pośrednictwem wywołań sieciowych, istnieją konfiguracje połączeń, które można dostosować, aby osiągnąć szczytową wydajność podczas korzystania z zestawu .NET SDK platformy .NET usługi Azure Cosmos DB w wersji 3.
Konfiguracja połączenia
Uwaga
W usłudze Azure Cosmos DB . Zestaw NETS SDK w wersji 3, tryb bezpośredni jest najlepszym wyborem w większości przypadków, aby zwiększyć wydajność bazy danych przy użyciu większości obciążeń.
Aby dowiedzieć się więcej o różnych opcjach łączności, zobacz artykuł Tryby łączności.
Tryb połączenia bezpośredniego
Domyślny tryb połączenia zestawu .NET SDK jest bezpośredni. W trybie bezpośrednim żądania są wykonywane przy użyciu protokołu TCP. Tryb wewnętrznie bezpośredni używa specjalnej architektury do dynamicznego zarządzania zasobami sieciowymi i uzyskania najlepszej wydajności. Architektura po stronie klienta zastosowana w trybie bezpośrednim umożliwia przewidywalne wykorzystanie sieci i multipleksowany dostęp do replik usługi Azure Cosmos DB. Aby dowiedzieć się więcej na temat architektury, zobacz architektura połączenia w trybie bezpośrednim.
Tryb połączenia można skonfigurować podczas tworzenia CosmosClient
wystąpienia w programie CosmosClientOptions
.
CosmosClient client = new CosmosClient(
"<nosql-account-endpoint>",
tokenCredential
new CosmosClientOptions
{
ConnectionMode = ConnectionMode.Gateway // ConnectionMode.Direct is the default
}
);
Dostosowywanie trybu bezpośredniego połączenia
Tryb bezpośredni można dostosować za pomocą elementu CosmosClientOptions przekazanego do konstruktora CosmosClient . Zalecamy użytkownikom unikanie modyfikowania tych danych, chyba że czują się komfortowo w zrozumieniu kompromisów i jest to konieczne.
Opcja konfiguracji | Wartość domyślna | Zalecane | Szczegóły |
---|---|---|---|
EnableTcpConnectionEndpointRediscovery | prawda | prawda | Reprezentuje to flagę umożliwiającą wykrywanie połączeń zamykających się z serwera. |
IdleTcpConnectionTimeout | Domyślnie bezczynne połączenia są przechowywane przez czas nieokreślony. | 20m-24h | Reprezentuje to czas bezczynności, po którym nieużywane połączenia są zamykane. Zalecane wartości to od 20 minut do 24 godzin. |
MaxRequestsPerTcpConnection | 30 | 30 | Reprezentuje to liczbę żądań dozwolonych jednocześnie za pośrednictwem pojedynczego połączenia TCP. Gdy więcej żądań jest w locie jednocześnie, klient direct/TCP otwiera dodatkowe połączenia. Nie ustawiaj tej wartości poniżej czterech żądań na połączenie lub więcej niż 50–100 żądań na połączenie. Aplikacje o wysokim stopniu równoległości na połączenie, z dużymi żądaniami lub odpowiedziami lub z dużymi wymaganiami dotyczącymi opóźnień mogą uzyskać lepszą wydajność z 8–16 żądań na połączenie. |
MaxTcpConnectionsPerEndpoint | 65535 | 65535 | Reprezentuje to maksymalną liczbę połączeń TCP, które mogą być otwarte dla każdego zaplecza usługi Cosmos DB. Razem z maxRequestsPerTcpConnection to ustawienie ogranicza liczbę żądań wysyłanych jednocześnie do pojedynczego zaplecza usługi Cosmos DB (MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint). Wartość musi być większa lub równa 16. |
OpenTcpConnectionTimeout | 5 s | 1 sekunda | Reprezentuje to ilość czasu dozwolonego na próbę nawiązania połączenia. Gdy upłynie czas, próba zostanie anulowana i zostanie zwrócony błąd. Dłuższe przekroczenia limitu czasu opóźniają ponawianie prób i awarie. |
PortReuseMode | PortReuseMode.ReuseUnicastPort | PortReuseMode.ReuseUnicastPort | Reprezentuje to zasady ponownego użycia portu klienta używane przez stos transportu. |
Dostosowywanie trybu połączenia bramy
Tryb bramy można dostosować za pomocą elementu CosmosClientOptions przekazanego do konstruktora CosmosClient . Zalecamy użytkownikom unikanie modyfikowania tych danych, chyba że czują się komfortowo w zrozumieniu kompromisów i jest to konieczne.
Opcja konfiguracji | Wartość domyślna | Zalecane | Szczegóły |
---|---|---|---|
GatewayModeMaxConnectionLimit | 50 | 50 | Reprezentuje to maksymalną liczbę współbieżnych połączeń dozwolonych dla docelowego punktu końcowego usługi w usłudze Azure Cosmos DB. |
WebProxy | null | null | Reprezentuje to informacje o serwerze proxy używane dla żądań internetowych. |
Uwaga
Zobacz również Najlepsze rozwiązania dotyczące korzystania z trybu bramy dla zestawu AZURE Cosmos DB NET SDK w wersji 3.
Następne kroki
Aby dowiedzieć się więcej na temat wskazówek dotyczących wydajności dla zestawu .NET SDK, zobacz Porady dotyczące wydajności dla zestawu SDK platformy Azure Cosmos DB w wersji 3.
- Jeśli wszystko, co wiesz, to liczba rdzeni wirtualnych i serwerów w istniejącym klastrze bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu rdzeni wirtualnych lub procesorów wirtualnych
- Jeśli znasz typowe stawki żądań dla bieżącego obciążenia bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu planisty pojemności usługi Azure Cosmos DB