Ajustar configurações de conexão para o Azure Cosmos DB .NET SDK v3
Importante
As informações neste artigo são apenas para o Azure Cosmos DB .NET SDK v3. Consulte os modos de conectividade do Azure Cosmos DB SQL SDK, as notas de versão do Azure Cosmos DB .NET SDK v3, o repositório Nuget e o guia de solução de problemas do Azure Cosmos DB .NET SDK v3 para obter mais informações. Se você estiver usando uma versão mais antiga do que a v3, consulte o guia Migrar para o Azure Cosmos DB .NET SDK v3 para obter ajuda na atualização para a v3.
O Azure Cosmos DB é um banco de dados distribuído rápido e flexível que pode ser dimensionado perfeitamente com latência e taxa de transferência garantidas. Você não precisa fazer grandes alterações na arquitetura ou escrever código complexo para dimensionar seu banco de dados com o Azure Cosmos DB. Escalar para cima e para baixo é tão fácil quanto fazer uma única chamada de API ou chamada de método SDK. No entanto, como o Azure Cosmos DB é acessado por meio de chamadas de rede, há configurações de conexão que você pode ajustar para obter o desempenho máximo ao usar o Azure Cosmos DB .NET SDK v3.
Configuração da conexão
Nota
No Azure Cosmos DB . NETS SDK v3, modo direto é a melhor escolha na maioria dos casos para melhorar 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 é direto. No modo direto, as solicitações são feitas usando o protocolo TCP. O modo Internamente Direto usa uma arquitetura especial para gerenciar dinamicamente os recursos da rede e obter o melhor desempenho. A arquitetura do lado do cliente empregada no modo Direto permite a utilização previsível da rede e o acesso multiplexado às réplicas do Azure Cosmos DB. Para saber mais sobre arquitetura, consulte a arquitetura de conexão de modo direto.
Você configura o modo de conexão ao criar a CosmosClient
instância no 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 através do CosmosClientOptions passado para o construtor CosmosClient . Recomendamos que os usuários evitem modificá-los, a menos que se sintam confortáveis em entender as compensações e seja necessário.
Opção de configuração | Predefinido | Recomendado | Detalhes |
---|---|---|---|
EnableTcpConnectionEndpointRediscovery | verdadeiro | verdadeiro | Isso representa o sinalizador para permitir a deteção de conexões que fecham 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 são 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 estão em voo simultaneamente, o cliente direto/TCP abre conexões extras. Não defina esse valor abaixo de quatro solicitações por conexão ou superior a 50-100 solicitações por conexão. Aplicativos com alto grau de paralelismo por conexão, com grandes solicitações ou respostas ou com requisitos de latência apertados podem obter 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. Juntamente com MaxRequestsPerTcpConnection, essa configuração limita o número de solicitações 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 passa, a tentativa é cancelada e um erro é retornado. Tempos limite mais longos atrasam novas tentativas e falhas. |
PortReuseMode | PortReuseMode.ReuseUnicastPort | PortReuseMode.ReuseUnicastPort | Isso representa a política de reutilização da porta do cliente usada pela pilha de transporte. |
Nota
Consulte também Dicas de desempenho de rede para o modo de conexão direta
Personalizando o modo de conexão do gateway
O modo Gateway pode ser personalizado através do CosmosClientOptions passado para o construtor CosmosClient . Recomendamos que os usuários evitem modificá-los, a menos que se sintam confortáveis em entender as compensações e seja necessário.
Opção de configuração | Predefinido | Recomendado | Detalhes |
---|---|---|---|
GatewayModeMaxConnectionLimit | 50 | 50 | Isso representa o número máximo de conexões simultâneas permitidas para o ponto de extremidade do serviço de destino no serviço Azure Cosmos DB. |
WebProxy | nulo | nulo | Isso representa as informações de proxy usadas para solicitações da Web. |
Nota
Consulte também Práticas recomendadas ao usar o modo Gateway para o Azure Cosmos DB NET SDK v3.
Próximos passos
Para saber mais sobre dicas de desempenho para o SDK do .NET, consulte Dicas de desempenho para o Azure Cosmos DB NET SDK v3.
- Se tudo o que você sabe é o número de vCores e servidores em seu cluster de banco de dados existente, leia sobre como estimar unidades de solicitação usando vCores ou vCPUs
- Se você souber as taxas de solicitação típicas para sua carga de trabalho de banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB