Optimieren von Verbindungskonfigurationen für Azure Cosmos DB .NET SDK v3
Wichtig
Die Informationen in diesem Artikel gelten nur für Azure Cosmos DB .NET SDK v3. Weitere Informationen finden Sie in den Azure Cosmos DB SQL SDK-Konnektivitätsmodi, den Azure Cosmos DB .NET SDK v3-Versionshinweisen, dem Nuget-Repository und dem Leitfaden zur Problembehandlung für Azure Cosmos DB .NET SDK v3. Wenn Sie aktuell eine ältere Version als v3 verwenden, lesen Sie den Leitfaden Migrieren zu Azure Cosmos DB .NET SDK v3, um das Upgrade auf v3 vorzunehmen.
Azure Cosmos DB ist eine schnelle und flexible verteilte Datenbank mit nahtloser Skalierung, garantierter Latenz und garantiertem Durchsatz. Die Skalierung Ihrer Datenbank mit Azure Cosmos DB erfordert weder aufwendige Änderungen an der Architektur noch das Schreiben von komplexem Code. Zentrales Hoch- und Herunterskalieren ist ebenso problemlos möglich wie das Aufrufen einer einzelnen API oder SDK-Methode. Da der Zugriff auf Azure Cosmos DB jedoch über Netzwerkaufrufe erfolgt, können Sie bei der Verwendung von Azure Cosmos DB .NET SDK v3 Verbindungskonfigurationen optimieren, um die bestmögliche Leistung zu erzielen.
Verbindungskonfiguration
Hinweis
In Azure Cosmos DB .NETS SDK v3 ist der direkte Modus in den meisten Fällen die beste Wahl, um die Datenbankleistung bei den meisten Workloads zu verbessern.
Weitere Informationen zu verschiedenen Konnektivitätsoptionen finden Sie im Artikel zu den Konnektivitätsmodi.
Direkter Verbindungsmodus
Als Standardverbindungsmodus von .NET SDK wird der direkte Modus verwendet. Im direkten Modus erfolgen Anforderungen mithilfe des TCP-Protokolls. Intern verwendet der direkte Modus eine spezielle Architektur, um Netzwerkressourcen dynamisch zu verwalten und die beste Leistung zu erzielen. Die clientseitige Architektur, die im direkten Modus eingesetzt wird, ermöglicht vorhersagbare Netzwerkauslastungen und Multiplexzugriff auf Azure Cosmos DB-Replikate. Weitere Informationen zur Architektur finden Sie unter Verbindungsarchitektur im direkten Modus.
Sie konfigurieren den Verbindungsmodus beim Erstellen der CosmosClient
-Instanz in CosmosClientOptions
.
CosmosClient client = new CosmosClient(
"<nosql-account-endpoint>",
tokenCredential
new CosmosClientOptions
{
ConnectionMode = ConnectionMode.Gateway // ConnectionMode.Direct is the default
}
);
Anpassen des direkten Verbindungsmodus
Der direkte Modus kann über die CosmosClientOptions, die an den CosmosClient-Konstruktor übergeben werden, angepasst werden. Wir empfehlen den Benutzern, diese nicht zu ändern, es sei denn, sie können die Kompromisse nachvollziehen und es ist erforderlich.
Konfigurationsoption | Standard | Empfohlen | Details |
---|---|---|---|
EnableTcpConnectionEndpointRediscovery | true | true | Flag, das die Erkennung von Schließen von Verbindungen durch den Server ermöglicht. |
IdleTcpConnectionTimeout | Standardmäßig werden Verbindungen im Leerlauf unbegrenzt geöffnet gehalten. | 20m-24h | Leerlaufzeitspanne, nach der nicht verwendete Verbindungen geschlossen werden. Empfohlen werden Werte zwischen 20 Minuten und 24 Stunden. |
MaxRequestsPerTcpConnection | 30 | 30 | Anzahl von Anforderungen, die gleichzeitig über eine einzelne TCP-Verbindung zulässig sind. Wenn mehrere Anforderungen gleichzeitig im Flight ausgeführt werden, öffnet der Direct/TCP-Client zusätzliche Verbindungen. Legen Sie diesen Wert mit nicht weniger als 4 Anforderungen pro Verbindung oder mehr als 50–100 Anforderungen pro Verbindung fest. Anwendungen mit einem hohen Grad an Parallelität pro Verbindung, mit umfassenden Anforderungen oder Antworten oder mit engen Latenzanforderungen können mit 8–16 Anforderungen pro Verbindung eine bessere Leistung erzielen. |
MaxTcpConnectionsPerEndpoint | 65.535 | 65.535 | Maximale Anzahl von TCP-Verbindungen, die für jedes Cosmos DB Back-End geöffnet werden können. Zusammen mit MaxRequestsPerTcpConnection begrenzt diese Einstellung die Anzahl der Anforderungen, die gleichzeitig an ein einzelnes Cosmos DB Back-End gesendet werden (MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint). Der Wert muss größer als oder gleich 16 sein. |
OpenTcpConnectionTimeout | 5 Sekunden | 1 Sekunde | Zeitspanne, die für den Versuch, eine Verbindung herzustellen, zulässig ist. Wenn die Zeitspanne abgelaufen ist, wird der Versuch abgebrochen und ein Fehler zurückgegeben. Längere Timeouts verzögern Wiederholungsversuche und Fehler. |
PortReuseMode | PortReuseMode.ReuseUnicastPort | PortReuseMode.ReuseUnicastPort | Richtlinie für die Wiederverwendung von Client-Ports, die vom Transportstapel verwendet wird. |
Hinweis
Siehe auch Tipps zur Netzwerkleistung für den direkten Verbindungsmodus
Anpassen des Gatewayverbindungsmodus
Der Gateway-Modus kann über die CosmosClientOptions, die an den CosmosClient-Konstruktor übergeben werden, angepasst werden. Wir empfehlen den Benutzern, diese nicht zu ändern, es sei denn, sie können die Kompromisse nachvollziehen und es ist erforderlich.
Konfigurationsoption | Standard | Empfohlen | Details |
---|---|---|---|
GatewayModeMaxConnectionLimit | 50 | 50 | Maximale Anzahl gleichzeitiger Verbindungen, die für den Zieldienstendpunkt im Azure Cosmos DB-Dienst zulässig sind. |
WebProxy | NULL | NULL | Proxy-Informationen, die für Webanforderungen verwendet werden. |
Hinweis
Weitere Informationen finden Sie unter Bewährte Methoden bei der Verwendung des Gateway-Modus für Azure Cosmos DB NET SDK v3.
Nächste Schritte
Weitere Informationen zu Leistungstipps für .NET SDK finden Sie unter Leistungstipps für Azure Cosmos DB NET SDK v3.
- Wenn Sie lediglich die Anzahl der virtuellen Kerne und Server in Ihrem vorhandenen Datenbankcluster kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mithilfe von virtuellen Kernen oder virtuellen CPUs.
- Wenn Sie die typischen Anforderungsraten für Ihre aktuelle Datenbankworkload kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mit dem Azure Cosmos DB-Kapazitätsplaner