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. |
Observação
Confira também Dicas de desempenho de rede para o modo direto de conexão
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. |
Observação
Confira também Boas práticas ao usar o modo Gateway para o SDK do .NET v3 do Azure Cosmos DB.
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.
- Se você sabe apenas o número de vCores e servidores do cluster de banco de dados existente, leia sobre como estimar unidades de solicitação com vCores ou vCPUs
- Se souber as taxas de solicitação típicas da carga de trabalho do banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB