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. |
Nota
Vedere anche Procedure consigliate per l'uso della modalità Gateway per .NET SDK v3 per Azure Cosmos DB.
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.
- Se si conosce solo il numero di vCore e server nel cluster di database esistente, leggere le informazioni sulla stima delle unità richieste con vCore o vCPU
- Se si conosce la frequenza delle richieste tipiche per il carico di lavoro corrente del database, leggere le informazioni sulla stima delle unità richieste con lo strumento di pianificazione della capacità di Azure Cosmos DB