Condividi tramite


Ottimizzare le configurazioni di connessione per di .NET SDK v3 per Azure Cosmos DB

Importante

Le informazioni contenute in questo articolo si riferiscono esclusivamente a .NET SDK v3 per Azure Cosmos DB. Per altre informazioni, vedere modalità di connettività di SDK SQL di Azure Cosmos DB, note sulla versione di .NET SDK v3 per Azure Cosmos DB, repository Nuget e guida alla risoluzione dei problemi di .NET SDK v3 per Azure Cosmos DB. Se si usa una versione precedente a v3, vedere la guida Eseguire la migrazione a .NET SDK v3 per Azure Cosmos DB per informazioni sull'aggiornamento alla versione v3.

Azure Cosmos DB è un database distribuito veloce e flessibile, facilmente scalabile e con latenza e velocità effettiva garantite. Non è necessario apportare modifiche significative all'architettura o scrivere codice complesso per ridimensionare il database con Azure Cosmos DB. Aumentare o ridurre le prestazioni è semplice come eseguire una singola chiamata API o una chiamata al metodo SDK. Tuttavia, dato che si accede ad Azure Cosmos DB tramite chiamate di rete, è possibile introdurre configurazioni di connessione per ottenere massime prestazioni durante l'uso di Azure Cosmos DB .NET SDK v3.

Configurazione connessione

Nota

In .NET S SDK v3 per Azure Cosmos DB, la modalità diretta è la scelta migliore nella maggior parte dei casi per migliorare le prestazioni del database con gran parte dei carichi di lavoro.

Per altre informazioni sulle diverse opzioni di connettività, consultare l'articolo modalità di connettività.

Modalità di connessione diretta

La modalità di connessione predefinita di .NET SDK è diretta. In modalità diretta, le richieste vengono effettuate mediante il protocollo TCP. Internamente Modalità diretta usa un'architettura speciale in modalità diretta per gestire le risorse di rete in modo dinamico e ottenere prestazioni ottimali. L'architettura sul lato client usata in modalità diretta consente l'utilizzo di rete prevedibile e l'accesso in multiplex alle repliche di Azure Cosmos DB. Per altre informazioni sull'architettura, vedere architettura di connessione in modalità diretta.

Alla creazione dell'istanza CosmosClient in CosmosClientOptions, l’utente configura la modalità di connessione.

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

Personalizzazione della modalità di connessione diretta

La modalità diretta può essere personalizzata tramite CosmosClientOptions passato al costruttore CosmosClient. Si consiglia agli utenti di evitare di modificarli, a meno che non abbiano piena comprensione dei relativi compromessi e che le modifiche siano necessarie.

Opzione di configurazione Default Consigliato Dettagli
EnableTcpConnectionEndpointRediscovery true true Rappresenta il flag per abilitare il rilevamento della chiusura delle connessioni dal server.
IdleTcpConnectionTimeout Per impostazione predefinita, le connessioni inattive sono mantenute aperte per un periodo illimitato. 20m-24h Rappresenta la durata del tempo di inattività dopo la quale le connessioni inutilizzate vengono chiuse. I valori consigliati sono compresi tra 20 minuti e 24 ore.
MaxRequestsPerTcpConnection 30 30 Rappresenta il numero di richieste consentite contemporaneamente su una singola connessione TCP. Quando più richieste sono distribuite in anteprima simultaneamente, il client diretto/TCP apre connessioni aggiuntive. L’impostazione di questo valore non deve essere inferiore a quattro richieste per connessione o superiore a 50-100 richieste per connessione. Le applicazioni con un elevato grado di parallelismo per connessione, con richieste o risposte di grandi dimensioni o con requisiti di latenza ristretti possono ottenere prestazioni migliori con 8-16 richieste per connessione.
MaxTcpConnectionsPerEndpoint 65535 65535 Rappresenta il numero massimo di connessioni TCP che possono essere aperte a ogni back-end di Cosmos DB. Insieme a MaxRequestsPerTcpConnection, questa impostazione limita il numero di richieste inviate simultaneamente a un singolo back-end di Cosmos DB (MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint). Il valore deve essere maggiore o uguale a 16.
OpenTcpConnectionTimeout 5 secondi 1 secondo Rappresenta la quantità di tempo consentita per il tentativo di stabilire una connessione. Alla scadenza, il tentativo viene annullato e viene restituito un errore. Timeout più lunghi ritardano tentativi ed errori.
PortReuseMode PortReuseMode.ReuseUnicastPort PortReuseMode.ReuseUnicastPort Rappresenta i criteri di riutilizzo della porta client usata dallo stack di trasporto.

Personalizzazione della modalità di connessione del gateway

La modalità Gateway può essere personalizzata passando CosmosClientOptions al costruttore CosmosClient. Si consiglia agli utenti di evitare di modificarli, a meno che non abbiano piena comprensione dei relativi compromessi e che le modifiche siano necessarie.

Opzione di configurazione Default Consigliato Dettagli
GatewayModeMaxConnectionLimit 50 50 Rappresenta il numero massimo di connessioni simultanee consentite per l'endpoint del servizio di destinazione nel servizio Azure Cosmos DB.
WebProxy Null Null Rappresenta le informazioni proxy usate per le richieste Web.

Passaggi successivi

Per altre informazioni relative ai suggerimenti sulle prestazioni per .NET SDK, vedere Suggerimenti per le prestazioni di .NET SDK v3 per Azure Cosmos DB.