Bearbeiten

Teilen über


Häufig gestellte Fragen zum im Autoskalierungsmodus bereitgestellten Durchsatz von Azure Cosmos DB

GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle

Azure Cosmos DB verwendet den per Autoskalierung bereitgestellten Durchsatz, um die Anforderungseinheiten pro Sekunde (RU/s) Ihrer Datenbank oder Ihres Containers basierend auf der Nutzung automatisch zu verwalten und zu skalieren. In diesem Artikel werden häufig gestellte Fragen zur Autoskalierung in Azure Cosmos DB beantwortet.

Worin besteht der Unterschied zwischen Autoskalierung und dynamischer Autoskalierung in Azure Cosmos DB?

Durch die Autoskalierung oder Autoskalierung des bereitgestellten Durchsatzes werden Workloads basierend auf der aktivsten Region und Partition skaliert. Im Gegensatz dazu ermöglicht die dynamische Autoskalierung eine unabhängige Skalierung der Regionen und Partitionen Ihrer Workloads je nach Nutzung. Wir empfehlen allen Kunden, die die Autoskalierung verwenden möchten, die dynamische Autoskalierung.

Wie kann ich die dynamische Autoskalierung für ein Konto programmgesteuert aktivieren?

Sie können eine Resource Manager-Vorlage mit API-Version 2023-11-15-preview oder einer neueren Vorschauversion verwenden, um die Eigenschaft enablePerRegionPerPartitionAutoscale auf true festzulegen. Sie können diese Eigenschaft in der JSON-Ansicht anzeigen, indem Sie die Vorschauversion 2023-11-15 oder eine spätere Vorschauversion verwenden. Sie können auch die Azure-Befehlszeilenschnittstelle oder PowerShell verwenden.

// Add Azure Cosmos DB extension 2.0.6-preview for PowerShell
Install-Module -Name Az.CosmosDB -RequiredVersion 2.0.6-preview -AllowPrerelease -AllowClobber -Force

// update the account using this command to enable or disable the property
Update-AzCosmosDBAccount -EnablePerRegionPerPartitionAutoscale $true -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"

// Run this command to see the enablement or disablement status:
Get-AzCosmosDBAccount -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"

Was geschieht mit Datenbanken oder Containern, die im früheren Autopilot-Ebenenmodell erstellt wurden?

Ressourcen, die im früheren Ebenenmodell erstellt wurden, werden im neuen Autoskalierungsmodell mit benutzerdefiniertem Höchstwert für RU/s automatisch unterstützt. Die Obergrenze der Ebene wird der neue Höchstwert für RU/s, sodass derselbe Skalierungsbereich gilt.

Wenn Sie z. B. zuvor die Ebene ausgewählt haben, bei der zwischen 400 und 4.000 RU/s skaliert wurde, zeigt die Datenbank oder der Container nun einen Höchstwert von 4.000 RU/s für eine Skalierung zwischen 400 und 4.000 RU/s an. Sie können dann den Höchstwert für RU/s in einen benutzerdefinierten Wert ändern, der auf Ihrer Workload basiert.

Wo liegen die Einstiegspunkt-RU/s für die Autoskalierung?

Ab April 2022 können Sie die Autoskalierung auf einen neuen niedrigen Höchstwert von 1.000 RU/s festlegen (Skalierung zwischen 100 und 1.000 RU/s). Sie können auch einen Skalierungsbereich von 200 bis 2.000 RU/s oder 300 bis 3.000 RU/s festlegen. Zuvor lag der Einstiegspunkt bei 400 bis 4.000 RU/s.

Diese Konfiguration wird für Workloads mit geringen Durchsatzanforderungen empfohlen, die aber dennoch auf die maximale Anzahl von RU/s skaliert werden können.

Wie schnell wird im Autoskalierungsmodus bei zunehmendem Datenverkehr hochskaliert?

Bei der Autoskalierung skaliert das System den Durchsatz (RU/s) T nach oben oder T nach unten, und zwar innerhalb des Bereichs 0,1 x Tmax und Tmax basierend auf dem eingehenden Datenverkehr. Da die Skalierung automatisch und sofort erfolgt, können Sie zu jedem beliebigen Zeitpunkt ohne Verzögerung Durchsatz bis zum bereitgestellten Wert Tmax verbrauchen.

Wie finde ich heraus, auf welche RU/s das System zurzeit skaliert ist?

Verwenden Sie Azure Monitor-Metriken, um die von der Autoskalierung bereitgestellten maximalen RU/s und den aktuellen Durchsatz (RU/s), auf den das System skaliert ist, zu überwachen.

Wie sieht das Preismodell für die Autoskalierung aus?

Jede Stunde wird Ihnen der höchste Durchsatz T in Rechnung gestellt, auf den das System innerhalb dieser Stunde skaliert wurde. Wenn Ihre Ressource während der Stunde keine Anforderungen empfangen hat oder nicht über 0,1 x Tmax hinaus skaliert wurde, wird Ihnen der Mindestwert von 0,1 x Tmax in Rechnung gestellt. Ausführliche Informationen finden Sie auf der Seite Azure Cosmos DB – Preise.

Wie wird die Autoskalierung auf meiner Rechnung angezeigt?

Bei Konten mit nur einer Schreibregion beträgt die Autoskalierungsrate pro 100 RU/s das 1,5-fache der Rate des standardmäßig (manuell) bereitgestellten Durchsatzes. Auf Ihrer Rechnung wird die Verbrauchseinheit des vorhandenen standardmäßig bereitgestellten Durchsatzes angezeigt. Die Menge dieser Verbrauchseinheit wird mit 1,5 multipliziert. Wenn z. B. der höchste Wert für RU/s, auf die das System innerhalb einer Stunde skaliert wurde, 6.000 RU/s betrug, werden Ihnen für diese Stunde 60 × 1,5 = 90 Einheiten dieser Verbrauchseinheit in Rechnung gestellt.

Bei Konten mit mehreren Schreibregionen ist die Autoskalierungsrate pro 100 RU/s mit der Rate des standardmäßig (manuell) bereitgestellten Durchsatzes für mehrere Schreibregionen identisch. Auf Ihrer Rechnung wird die bestehende Verbrauchseinheit für mehrere Schreibregionen angezeigt. Da die Tarife identisch sind, wird bei Verwendung der Autoskalierung dieselbe Menge wie beim Standarddurchsatz angegeben.

Funktioniert die Autoskalierung mit reservierter Kapazität?

Ja. Bei reservierter Kapazität für Konten mit einzelnen Schreibregionen wird der Reservierungsrabatt für Ressourcen mit Autoskalierung im Verhältnis 1,5 der Rate für die jeweilige Region auf die Verbrauchseinheit angewandt. Wenn Sie beispielsweise reservierte Kapazität verwenden möchten, um 10.000 RU/s im Autoskalierungsmodus abzudecken, sollten Sie einen Gesamterwerb von 15.000 RU/s reservierter Kapazität planen.

Die reservierte Kapazität für mehrere Schreibregionen funktioniert für Durchsatz mit Autoskalierung und den standardmäßig (manuell) bereitgestellten Durchsatz gleich. Weitere Informationen finden Sie unter Reservierte Azure Cosmos DB-Kapazität.

Funktioniert die Autoskalierung im Free-Tarif von Azure Cosmos DB?

Ja. Im Free-Tarif können Sie den Durchsatz mit Autoskalierung für einen Datenbank oder einen Container verwenden. Erfahren Sie mehr darüber, wie die Abrechnung im Free-Tarif mit Autoskalierung funktioniert.

Wird die Autoskalierung für alle APIs unterstützt?

Ja. Die Autoskalierung wird für alle APIs unterstützt: NoSQL, Gremlin, Table, Cassandra und MongoDB.

Wird die Autoskalierung für Konten mit mehreren Schreibregionen unterstützt?

Ja. Die maximalen RU/s sind in jeder Region verfügbar, die Sie dem Azure Cosmos DB-Konto hinzufügen.

Wie aktiviere ich die Autoskalierung für neue Datenbanken oder Container?

Kann ich die Autoskalierung für vorhandene Datenbanken oder Container aktivieren?

Ja. Sie können auch zwischen per Autoskalierung und standardmäßig (manuell) bereitgestelltem Durchsatz wechseln. Derzeit können Sie diese Vorgänge für alle APIs über das Azure-Portal, die Azure CLI oder mithilfe von PowerShell durchführen. Standardmäßig können Sie weder die Azure Cosmos DB-Client-SDKs noch eine Azure Resource Manager-Vorlage verwenden, um zwischen manuell bereitgestelltem Durchsatz und Autoskalierung zu migrieren. Sie können jedoch mit Client-SDKs oder einer Azure Resource Manager-Vorlagen neue Autoskalierungsressourcen erstellen und die maximale Anzahl von RU/s für eine vorhandene Autoskalierungsressource ändern.

Wie funktioniert die Migration zwischen Autoskalierung und standardmäßig (manuell) bereitgestelltem Durchsatz?

Konzeptionell ist das Ändern des Durchsatztyps ein zweistufiger Prozess. Zuerst senden Sie eine Anforderung zum Ändern der Durchsatzeinstellungen, um entweder die Autoskalierung oder den manuell bereitgestellten Durchsatz zu verwenden. In beiden Fällen wird vom System automatisch ein anfänglicher Wert für die RU/s basierend auf den aktuellen Durchsatzeinstellungen und dem aktuellen Speicher festgelegt. Während dieses Schritts wird kein vom Benutzer bereitgestellter Wert für die RU/s akzeptiert. Nachdem die Aktualisierung abgeschlossen ist, können Sie die RU/s ändern, um sie an Ihre Workload anzupassen.

Migrieren vom standardmäßig (manuell) bereitgestellten Durchsatz zur Autoskalierung

Verwenden Sie für einen Container die folgende Formel, um den anfänglichen Höchstwert an RU/s für die Autoskalierung zu schätzen:

MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10), gerundet auf die nächsten 1.000 RU/s.

Der tatsächliche anfängliche Höchstwert an RU/s für die Autoskalierung kann je nach Kontokonfiguration variieren.

Beispiel 1: Sie verfügen über einen Container mit einem manuell bereitgestellten Durchsatz von 10.000 RU/s und 25 GB Speicherplatz. Wenn Sie die Autoskalierung aktivieren, gilt zunächst folgender Höchstwert für die RU/s: 10.000 RU/s, die zwischen 1.000 und 10.000 RU/s skaliert werden können.

Beispiel 2: Sie verfügen über einen Container mit einem manuell bereitgestellten Durchsatz von 50.000 RU/s und 25.000 GB Speicherplatz. Wenn Sie die Autoskalierung aktivieren, gilt zunächst folgender Höchstwert für die RU/s: 250.000 RU/s, die zwischen 25.000 und 250.000 RU/s skaliert werden können.

Migrieren von Durchsatz mit Autoskalierung zu standardmäßig (manuell) bereitgestelltem Durchsatz

Der anfängliche manuell bereitgestellte Durchsatz entspricht dem aktuellen Höchstwert für die RU/s bei Autoskalierung.

Beispiel: Sie verfügen über eine Datenbank oder einen Container mit Autoskalierung und einem Höchstwert von 20.000 RU/s (Skalierung zwischen 2.000 und 20.000 RU/s). Wenn Sie auf manuell bereitgestellten Durchsatz umstellen, beträgt der anfängliche Durchsatz 20.000 RU/s.

Wenn Sie eine große Anzahl von Durchsatzressourcen migrieren müssen, verwenden Sie ggf. Azure CLI-Skript – In Autoskalierung konvertieren.

Kann ich zur Verwaltung von Datenbanken oder Containern mit Autoskalierung die Azure CLI, PowerShell oder Azure Resource Manager verwenden?

Ja. Um die Autoskalierung für eine vorhandene Datenbank oder einen vorhandenen Container programmgesteuert zu aktivieren, können Sie die Azure CLI oder PowerShell verwenden.

Zum Erstellen einer neuen Datenbank oder eines neuen Containers mit Autoskalierung können Sie die Azure CLI, PowerShell oder eine Azure Resource Manager-Vorlage verwenden.

Wird die Autoskalierung für Datenbanken mit gemeinsam genutztem Durchsatz unterstützt?

Ja. Um die Autoskalierung für eine Datenbank mit gemeinsam genutztem Durchsatz zu aktivieren, wählen Sie beim Erstellen der Datenbank die Autoskalierung und die Option Durchsatz bereitstellen aus.

Wie viele Container sind pro Datenbank mit gemeinsam genutztem Durchsatz zulässig, wenn die Autoskalierung aktiviert ist?

Azure Cosmos DB erzwingt in einer Datenbank mit gemeinsam genutztem Durchsatz einen Höchstwert von 25 Containern. Der Höchstwert gilt für Datenbanken, die entweder über Autoskalierung oder standardmäßig (manuell) bereitgestellten Durchsatz verfügen.

Wie wirkt sich die Autoskalierung auf die Datenbankkonsistenzebene aus?

Die Autoskalierung hat keine Auswirkungen auf die Konsistenzebene einer Datenbank.

Weitere Informationen finden Sie unter Konsistenzebenen.

Welches Speicherlimit gilt für die einzelnen Optionen für maximale RU/s?

Das Speicherlimit in GB für den jeweiligen Höchstwert für RU/s entspricht dem Höchstwert für die RU/s der Datenbank oder des Containers dividiert durch 10. Wenn z. B. der Höchstwert für RU/s 20.000 beträgt, kann die Ressource 2.000 GB Speicherplatz unterstützen.

Informationen zu verfügbaren Optionen für maximale RU/s und Speicher finden Sie unter den Limits für die Durchsatzbereitstellung bei Autoskalierung.

Was passiert, wenn ich das mit meinem maximalen Durchsatz verbundene Speicherlimit überschreite?

Wenn das mit dem maximalen Durchsatz der Datenbank oder des Containers verbundene Speicherlimit überschritten wird, erhöht Azure Cosmos DB automatisch den maximalen Durchsatz auf den Höchstwert an RU/s, den dieses Speicherniveau unterstützen kann.

Beispielszenario: Wenn Sie mit einem Höchstwert von 50.000 RU/s beginnen (Skalierungen zwischen 5.000 und 50.000 RU/s), können Sie bis zu 5.000 GB an Daten speichern. Wenn die Speichergröße auf 5.001 GB ansteigt, liegt der Speicher nun bei 6.000 GB, und der neue Höchstwert beträgt 60.000 RU/s (Skalierung zwischen 6.000 und 60.000 RU/s).

Kann ich die maximale Anzahl von RU/s für eine Datenbank oder einen Container ändern?

Ja. Weitere Informationen finden Sie unter Bereitstellen von automatisch skaliertem Durchsatz für eine Datenbank.

Wenn Sie die maximale Anzahl von RU/s ändern, kann es je nach angefordertem Wert 4 bis 6 Stunden dauern, bis der asynchrone Vorgang abgeschlossen ist. Weitere Informationen

Wie erhöhe ich die maximale Anzahl von RU/s?

Wenn Sie eine Anforderung senden, um die maximale Anzahl von RU/s (Tmax) zu erhöhen, stellt der Dienst je nach ausgewählter maximaler Anzahl von RU/s mehr Ressourcen bereit, um die höhere maximale Anzahl von RU/s zu unterstützen. Während dieser Umstellung werden Ihre vorhandenen Workloads und Vorgänge nicht beeinträchtigt. Das System skaliert Ihre Datenbank oder Ihren Container weiterhin zwischen den vorherigen Werten von 0,1 x Tmax und Tmax, bis der neue Skalierungsbereich zwischen 0,1 x Tmax_new und Tmax_new bereit ist.

Wie verringere ich die maximale Anzahl von RU/s?

Wenn Sie die maximale Anzahl von RU/s senken, ist der mögliche Mindestwert MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10), gerundet auf die nächsten 1.000 RU/s.

Beispiel 1: Sie verfügen über einen Container mit Autoskalierung und einem Höchstwert von 20.000 RU/s (Skalierung zwischen 2.000 und 20.000 RU/s) und 1.500 GB Speicherplatz. Der Mindestwert, auf den Sie die maximale Anzahl von RU/s festlegen können, ist MAX(1,000, 20,000 / 10, 1,500 × 10) = 15 000 RU/s (Skalierung zwischen 1.500 und 15.000 RU/s).

Beispiel 2: Sie verfügen über einen Container mit Autoskalierung und einem Höchstwert von 100.000 RU/s und 100 GB Speicherplatz. Nun legen Sie den Höchstwert auf 150.000 RU/s fest (Skalierung zwischen 15.000 und 150.000 RU/s). Der Mindestwert, auf den Sie die maximale Anzahl von RU/s jetzt festlegen können, ist MAX(1,000, 150,000 / 10, 100 × 10) = 15 000 RU/s (Skalierung zwischen 1.500 und 15.000 RU/s).

Wenn Sie bei einer Datenbank mit gemeinsam genutztem Durchsatz die maximale Anzahl von RU/s senken, ist der mögliche Mindestwert MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10, 1,000 + (MAX(Container count - 25, 0) × 1,000)), gerundet auf die nächsten 1.000 RU/s.

Diese Formeln und Beispiele gelten für den Mindestwert der maximalen Anzahl von RU/s, die Sie bei Autoskalierung festlegen können. Sie sind vom Bereich zwischen 0,1 × Tmax und Tmax getrennt, in dem das System automatisch skaliert. Unabhängig von der maximalen Anzahl von RU/s skaliert das System immer zwischen 0,1 × Tmax und Tmax.

Wie funktioniert TTL mit der Autoskalierung?

Bei der Autoskalierung haben TTL-Vorgänge (Time To Live, Gültigkeitsdauer) keine Auswirkung auf die Skalierung von RU/s. Aufgrund von TTL verbrauchte RUs werden nicht zusammen mit den in Rechnung gestellten RU/s des Containers mit Autoskalierung abgerechnet.

Für einen Container mit Autoskalierung und 400 bis 4.000 RU/s trifft beispielsweise Folgendes zu:

  • Stunde 1: T=0: Der Container wird nicht verwendet (keine TTL- oder Workloadanforderungen). Die abrechnungsfähigen RU/s betragen 400 RU/s.
  • Stunde 1: T=1: Gültigkeitsdauer (TTL) ist aktiviert.
  • Stunde 1: T=2: Der Container beginnt, Anforderungen zu erhalten. Die Anforderungen verbrauchen 1.000 RU/s in einer Sekunde. Es fallen 200 RU/s in die TTL. Die abrechnungsfähigen RU/s betragen trotzdem 1.000 RU/s. Unabhängig davon, wann die TTL-Löschvorgänge auftreten, haben sie keine Auswirkungen auf die Skalierungslogik für Autoskalierung.

Wie wird die maximale Anzahl von RU/s den physischen Partitionen zugeordnet?

Wenn Sie zum ersten Mal die maximale Anzahl von RU/s auswählen, erfolgt die Bereitstellung durch Azure Cosmos DB, indem die maximale Anzahl von RU/s durch 10.000 RU/s dividiert wird, um die Anzahl der erforderlichen physischen Partitionen zu erhalten. Jede physische Partition kann bis zu 10.000 RU/s und 50 GB Speicherplatz unterstützen. Wenn die Speichergröße zunimmt, teilt Azure Cosmos DB die Partitionen automatisch auf, um weitere physische Partitionen zur Bewältigung des Speicherzuwachses hinzuzufügen. Wenn der Speicher das zugeordnete Limit überschreitet, erhöht Azure Cosmos DB die maximale Anzahl von RU/s.

Die maximale Anzahl von RU/s der Datenbank oder des Containers werden gleichmäßig auf alle physischen Partitionen aufgeteilt. Der Gesamtdurchsatz, auf den jede einzelne physische Partition skaliert werden kann, entspricht der maximalen Anzahl von RU/s der Datenbank oder des Containers, dividiert durch die Anzahl der physischen Partitionen.

Was passiert, wenn eingehende Anforderungen die maximale Anzahl von RU/s der Datenbank oder des Containers überschreiten?

Wenn die insgesamt verbrauchten RU/s die maximale Anzahl von RU/s der Datenbank oder des Containers überschreiten, werden Anforderungen, die die maximale Anzahl von RU/s überschreiten, gedrosselt und Statuscode 429 wird zurückgegeben. Anforderungen, die zu einer normalisierten Auslastung von mehr als 100 Prozent führen, werden gedrosselt. Die normalisierte Auslastung ist definiert als die maximale Auslastung der RU/s über alle physischen Partitionen.

Beispiel: Ihr maximaler Durchsatz beträgt 20.000 RU/s, und Sie haben zwei physische Partitionen, P_1 und P_2. Jede Partition kann auf 10.000 RU/s skaliert werden. Wenn P_1 in einer bestimmten Sekunde 6.000 RUs und P_2 8.000 RUs genutzt hat, beträgt die normalisierte Auslastung MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU) = 0,8.

Hinweis

Die SDKs des Azure Cosmos DB-Clients und die Tools für den Datenimport (Azure Data Factory, BulkExecutor-Bibliothek) führen automatisch einen erneuten Versuch durch, nachdem ein Fehlercode 429 zurückgegeben wurde, sodass gelegentliche 429-Fehlercodes nicht problematisch sind. Eine anhaltend hohe Anzahl von 429-Fehlercodes kann darauf hindeuten, dass Sie die maximale Anzahl von RU/s erhöhen oder Ihre Partitionierungsstrategie überprüfen und eine heiße Partition einbeziehen müssen.

Können Drosselungs- oder Ratenbegrenzungsfehler auftreten, wenn die Autoskalierung aktiviert ist?

Ja. 429-Fehlercodes können in zwei Szenarien angezeigt werden.

Erstens: Wenn die insgesamt verbrauchten RU/s die maximalen RU/s der Datenbank oder des Containers überschreiten, drosselt der Dienst die Anforderungen entsprechend.

Zweitens: Wenn ein logischer Partitionsschlüsselwert im Vergleich zu anderen Partitionsschlüsselwerten eine unverhältnismäßig hohe Anzahl von Anforderungen aufweist, wie z. B. eine heiße Partition, kann die zugrunde liegende physische Partition ihr RU/s-Budget überschreitet. Um Hot-Partitionen zu vermeiden, ist es am besten, einen geeigneten Partitionsschlüssel auszuwählen, der zu einer gleichmäßigen Verteilung von Speicher und Durchsatz führt.

Wenn Sie z. B. die Option für maximalen Durchsatz von 20.000 RU/s auswählen und über 200 GB Speicherplatz sowie vier physische Partitionen verfügen, kann jede physische Partition automatisch auf bis zu 5.000 RU/s hochskaliert werden. Befindet sich eine heiße Partition auf einem bestimmten logischen Partitionsschlüssel, werden 429-Fehlercodes angezeigt, sobald die zugrunde liegende physische Partition, in der sie sich befindet, 5.000 RU/s oder eine normalisierte Auslastung von 100 Prozent überschreitet.

Die Anzeige von 429-Fehlercodes bei Verwendung der Autoskalierung deutet nicht unbedingt auf ein Problem mit Ihrer Datenbank oder Ihrem Container hin. Im Allgemeinen gilt für eine Workload in der Produktion: Wenn 1 bis 5 Prozent der Anforderungen 429-Fehlercodes aufweisen und die End-to-End-Latenz akzeptabel ist, sind die Fehlermeldungen ein gutes Zeichen dafür, dass die RU/s vollständig genutzt werden. Keine Aktion erforderlich.

Erfahren Sie mehr über das Interpretieren und Debuggen von Ratenbegrenzungsfehlern des Typs 429.

Kann der normalisierte RU/s-Verbrauch bei 100 Prozent liegen, wenn die Autoskalierung nicht auf die maximale Anzahl von RU/s skaliert?

Ja. Weitere Informationen finden Sie unter Überwachen von normalisierten RU/s.