Compartir a través de


Ajuste de las configuraciones de conexión para SDK v3 para .NET de Azure Cosmos DB

Importante

La información de este artículo es solo para SDK v3 para .NET de Azure Cosmos DB. Para obtener más información, consulte los modos de conectividad del SDK del SQL de Azure Cosmos DB, las notas de SDK v3 para .NET de Azure Cosmos DB, el repositorio nuget y la guía de solución de problemas de SDK v3 para .NET de Azure Cosmos DB. Si en la actualidad usa una versión anterior a la v3, consulte la guía Migración a SDK v3 para .NET de Azure Cosmos DB a fin de obtener ayuda para actualizar a v3.

Azure Cosmos DB es una base de datos distribuida rápida y flexible que se escala sin problemas con una latencia y un rendimiento garantizados. No es necesario realizar cambios de arquitectura importantes ni escribir el código complejo para escalar la base de datos con Azure Cosmos DB. Escalar y reducir verticalmente es tan sencillo como realizar una única llamada API o una llamada al método SDK. Sin embargo, debido a que el acceso a Azure Cosmos DB se realiza través de llamadas de red, existen configuraciones de conexión que puede ajustar para conseguir el máximo rendimiento cuando usa SDK v3 para .NET de Azure Cosmos DB.

Configuración de la conexión

Nota

En SDK v3 para .NET de Azure Cosmos DB, el modo directo es la mejor opción en la mayoría de los casos para mejorar el rendimiento de la base de datos con la mayoría de las cargas de trabajo.

Para obtener más información sobre las distintas opciones de conectividad, vea el artículo Modos de conectividad.

Modo de conexión directa

El modo de conexión predeterminado del SDK de .NET es directo. En modo directo, las solicitudes se realizan mediante el protocolo TCP. Internamente, el modo directo usa una arquitectura especial para administrar dinámicamente los recursos de red y obtener el mejor rendimiento. La arquitectura del lado cliente empleada en el modo directo permite un uso predecible de la red y el acceso multiplexado a las réplicas de Azure Cosmos DB. Para obtener más información sobre la arquitectura, consulte la arquitectura de conexión en modo directo.

El modo de conexión se configura cuando se crea la instancia de CosmosClient en CosmosClientOptions.

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

Personalización del modo de conexión directa

El modo directo se puede personalizar mediante CosmosClientOptions pasado al constructor CosmosClient . Se recomienda que los usuarios eviten modificarlos, a menos que se sientan cómodos en el reconocimiento de los inconvenientes y sea necesario.

Opción de configuración Valor predeterminado Recomendado Detalles
EnableTcpConnectionEndpointRediscovery true true Representa la marca para habilitar la detección de conexiones que se cierran desde el servidor.
IdleTcpConnectionTimeout De forma predeterminada, las conexiones inactivas se mantienen abiertas indefinidamente. 20 m-24 h Esto representa la cantidad de tiempo de inactividad después de la cual se cierran las conexiones sin usar. Los valores recomendados están comprendidos entre 20 minutos y 24 horas.
MaxRequestsPerTcpConnection 30 30 Representa el número de solicitudes permitidas simultáneamente a través de una única conexión TCP. Cuando hay más solicitudes en curso simultáneamente, el cliente direct/TCP abre conexiones adicionales. No defina este valor con menos de cuatro solicitudes por conexión ni con más de 50-100 solicitudes por conexión. Las aplicaciones con un alto grado de paralelismo por conexión, con grandes solicitudes o respuestas, o con requisitos de latencia ajustados pueden obtener un mejor rendimiento con 8-16 solicitudes por conexión.
MaxTcpConnectionsPerEndpoint 65535 65535 Esto representa el número máximo de conexiones TCP que se pueden abrir en cada back-end de Cosmos DB. Junto con MaxRequestsPerTcpConnection, esta configuración limita el número de solicitudes que se envían simultáneamente a un único back-end de Cosmos DB (MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint). El valor debe ser superior o igual a 16.
OpenTcpConnectionTimeout 5 segundos 1 segundo Esto representa la cantidad de tiempo permitido para intentar establecer una conexión. Cuando transcurre el tiempo, se cancela el intento y se devuelve un error. Los tiempos de espera más largos retrasan los reintentos y los errores.
PortReuseMode PortReuseMode.ReuseUnicastPort PortReuseMode.ReuseUnicastPort Esto representa la directiva de reutilización del puerto de cliente utilizada por la pila de transporte.

Personalización del modo de conexión de puerta de enlace

El modo de puerta de enlace se puede personalizar mediante CosmosClientOptions pasado al constructor CosmosClient . Se recomienda que los usuarios eviten modificarlos, a menos que se sientan cómodos en el reconocimiento de los inconvenientes y sea necesario.

Opción de configuración Valor predeterminado Recomendado Detalles
GatewayModeMaxConnectionLimit 50 50 Esto representa el número máximo de conexiones simultáneas permitidas para el punto de conexión de servicio de destino en el servicio Azure Cosmos DB.
WebProxy null null Representa la información de proxy utilizada para las solicitudes web.

Pasos siguientes

Para más información sobre las sugerencias de rendimiento para el SDK de .NET, consulte Sugerencias de rendimiento para el SDK v3 para NET de Azure Cosmos DB.