Compartilhar via


Ajustar as configurações de conexão para o SDK do .NET v3 do Azure Cosmos DB

Importante

As informações neste artigo destinam-se apenas ao SDK do .NET v3 do Azure Cosmos DB. Confira os modos de conectividade do SDK do SQL do Azure Cosmos DB, as Notas de versão do SDK do .NET v3 do Azure Cosmos DB, o repositório Nuget e o guia de solução de problemas do SDK do .NET v3 do Azure Cosmos DB para obter mais informações. Se estiver usando uma versão mais antiga que a v3, confira o guia Migrar para o SDK do .NET v3 do Azure Cosmos DB para obter ajuda relativa à atualização para a versão v3.

O Azure Cosmos DB é um banco de dados distribuído rápido e flexível que pode ser dimensionado perfeitamente com garantia de latência e produtividade. Você não precisa fazer grandes alterações de arquitetura nem escrever códigos complexos para dimensionar seu banco de dados com o Azure Cosmos DB. Aumentar e reduzir é tão fácil quanto fazer uma única chamada à API ou uma chamada ao método do SDK. No entanto, devido ao fato de o Azure Cosmos DB ser acessado por meio de chamadas de rede, existem configurações de conexão que você pode ajustar para obter o auge do desempenho ao usar o SDK do .NET v3 do Azure Cosmos DB.

Configuração de conexão

Observação

No SDK do .NET v3 do Azure Cosmos DB, o Modo Direto é a melhor opção na maioria dos casos para aprimorar o desempenho do banco de dados com a maioria das cargas de trabalho.

Para saber mais sobre as diferentes opções de conectividade, consulte o artigo Modos de conectividade.

Modo de conexão direta

O modo de conexão padrão do SDK do .NET é o modo direto. No modo direto, as solicitações são feitas usando o protocolo TCP. Internamente, o modo direto usa uma arquitetura especial para gerenciar dinamicamente os recursos de rede e obter o melhor desempenho. A arquitetura do lado do cliente empregada no modo direto permite a utilização de rede previsível e o acesso multiplexado a réplicas do Azure Cosmos DB. Para saber mais sobre arquitetura, confira arquitetura de conexão do modo direto.

Você o configura ao criar a instância CosmosClient em CosmosClientOptions.

CosmosClient client = new CosmosClient(
  "<nosql-account-endpoint>",
  tokenCredential
  new CosmosClientOptions
  {
      ConnectionMode = ConnectionMode.Gateway // ConnectionMode.Direct is the default
  }
);

Personalizando o modo de conexão direta

O modo direto pode ser personalizado por meio das CosmosClientOptions passadas para o construtor de CosmosClient . Recomendamos que os usuários evitem modificá-las, a menos que se sintam à vontade para entender do que será preciso abrir mão e se isso é necessário.

Opções de configuração Padrão Recomendadas Detalhes
EnableTcpConnectionEndpointRediscovery true true Isso representa o sinalizador para habilitar a detecção de conexões sendo fechadas a partir do servidor.
IdleTcpConnectionTimeout Por padrão, as conexões ociosas são mantidas abertas indefinidamente. 20m-24h Isso representa a quantidade de tempo ocioso após o qual as conexões não utilizadas são fechadas. Os valores recomendados variam entre 20 minutos e 24 horas.
MaxRequestsPerTcpConnection 30 30 Isso representa o número de solicitações permitidas simultaneamente em uma única conexão TCP. Quando mais solicitações estiverem em andamento simultaneamente, o cliente direto/TCP abrirá mais conexões adicionais. Não defina esse valor com menos de quatro solicitações por conexão ou mais de 50 a 100 solicitações por conexão. Aplicativos com alto grau de paralelismo por conexão, com solicitações ou respostas grandes ou com requisitos de latência rígidos podem obter um melhor desempenho com 8 a 16 solicitações por conexão.
MaxTcpConnectionsPerEndpoint 65535 65535 Isso representa o número máximo de conexões TCP que podem ser abertas para cada back-end do Cosmos DB. Junto com o MaxRequestsPerTcpConnection, essa configuração limita o número de solicitações que são enviadas simultaneamente para um único back-end do Cosmos DB (MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint). O valor deve ser maior ou igual a 16.
OpenTcpConnectionTimeout 5 segundos 1 segundo Isso representa a quantidade de tempo permitida para tentar estabelecer uma conexão. Quando o tempo se esgota, a tentativa é cancelada e um erro é retornado. Tempos limite mais longos adiam novas tentativas e falhas.
PortReuseMode PortReuseMode.ReuseUnicastPort PortReuseMode.ReuseUnicastPort Isso representa a política de reutilização de porta do cliente usada pela pilha de transporte.

Personalizar o modo de conexão Gateway

O modo Gateway pode ser personalizado por meio das CosmosClientOptions passadas para o construtor de CosmosClient. Recomendamos que os usuários evitem modificá-las, a menos que se sintam à vontade para entender do que será preciso abrir mão e se isso é necessário.

Opções de configuração Padrão Recomendadas Detalhes
GatewayModeMaxConnectionLimit 50 50 Isso representa o número máximo de conexões simultâneas permitidas para o ponto de extremidade de serviço de destino no serviço do Azure Cosmos DB.
WebProxy nulo nulo Isso representa as informações de proxy usadas para as solicitações web.

Próximas etapas

Para aprender mais dicas de desempenho para o SDK do .NET, confira Dicas de desempenho para o SDK do .NET v3 do Azure Cosmos DB.