Evaluieren Sie die Auto-Scaling-Einstellungen Ihrer DynamoDB-Tabelle - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Evaluieren Sie die Auto-Scaling-Einstellungen Ihrer DynamoDB-Tabelle

In diesem Abschnitt erfahren Sie, wie Sie die Auto-Scaling-Einstellungen in Ihren DynamoDB-Tabellen auswerten können. Amazon DynamoDB Auto Scaling ist eine Funktion, die den Durchsatz von Tabellen und globalen sekundären Indizes (GSI) auf der Grundlage Ihres Anwendungsdatenverkehrs und Ihrer Zielnutzungsmetrik verwaltet. Dadurch GSIs wird sichergestellt, dass Ihre Tabellen oder Tabellen über die erforderliche Kapazität verfügen, die für Ihre Anwendungsmuster erforderlich ist.

Der AWS Auto Scaling-Dienst überwacht Ihre aktuelle Tabellenauslastung und vergleicht sie mit dem Zielnutzungswert:TargetValue. Wenn es an der Zeit ist, die zugewiesene Kapazität zu erhöhen oder zu verringern, werden Sie benachrichtigt.

Grundlegende Informationen zu Ihren Auto-Scaling-Einstellungen

Die Festlegung des richtigen Werts für die Zielauslastung, den ersten Schritt und die Endwerte erfordert die Beteiligung Ihres Operations-Teams. So können Sie die Werte, die zur Auslösung der AWS -Auto-Scaling-Richtlinien verwendet werden, auf der Grundlage der Anwendungsnutzung in der Vergangenheit angemessen definieren. Das Auslastungsziel ist der Prozentsatz Ihrer Gesamtkapazität, der in einem bestimmten Zeitraum erreicht werden muss, bevor die Auto-Scaling-Regeln angewendet werden.

Wenn Sie ein hohes Auslastungsziel (ein Ziel von rund 90 %) festlegen, muss der Datenverkehr einige Zeit einen Wert von über 90 % erreichen, bevor Auto Scaling aktiviert wird. Ein hohes Auslastungsziel sollten Sie nur verwenden, wenn Ihre Anwendung sehr konstant arbeitet und keine Datenverkehrsspitzen verzeichnet.

Wenn Sie eine sehr niedrige Auslastung (ein Ziel von weniger als 50 %) festlegen, wird eine Auto-Scaling-Richtlinie erst ausgelöst, wenn Ihre Anwendung 50 % der bereitgestellten Kapazität erreicht. Sofern Ihr Anwendungsdatenverkehr nicht extrem schnell zunimmt, führt dies in der Regel zu ungenutzter Kapazität und einer Ressourcenverschwendung.

So ermitteln Sie Tabellen mit geringer Zielauslastung (<= 50 %)

Sie können entweder das AWS CLI oder verwenden AWS Management Console , um die TargetValues für Ihre Auto Scaling-Richtlinien in Ihren DynamoDB-Ressourcen geltenden Richtlinien zu überwachen und zu identifizieren:

AWS CLI
  1. Verwenden Sie den folgenden Befehl, um die gesamte Ressourcenliste zurückzugeben:

    aws application-autoscaling describe-scaling-policies --service-namespace dynamodb

    Dieser Befehl gibt die gesamte Liste der Auto-Scaling-Richtlinien zurück, die für jede DynamoDB-Ressource ausgegeben werden. Wenn Sie nur die Ressourcen aus einer bestimmten Tabelle abrufen möchten, können Sie den –resource-id parameter hinzufügen. Beispielsweise:

    aws application-autoscaling describe-scaling-policies --service-namespace dynamodb --resource-id "table/<table-name>”
  2. Geben Sie nur die Auto Scaling-Richtlinien für eine bestimmte Datei zurück, GSI indem Sie den folgenden Befehl ausführen

    aws application-autoscaling describe-scaling-policies --service-namespace dynamodb --resource-id "table/<table-name>/index/<gsi-name>”

    Die für die Auto-Scaling-Richtlinien interessanten Werte sind unten hervorgehoben. Wir möchten einen Zielwert von über 50 % sicherstellen, um eine übermäßige Bereitstellung zu vermeiden. Das Ergebnis sollte etwa wie folgt aussehen:

    { "ScalingPolicies": [ { "PolicyARN": "arn:aws:autoscaling:<region>:<account-id>:scalingPolicy:<uuid>:resource/dynamodb/table/<table-name>/index/<index-name>:policyName/$<full-gsi-name>-scaling-policy", "PolicyName": $<full-gsi-name>”, "ServiceNamespace": "dynamodb", "ResourceId": "table/<table-name>/index/<index-name>", "ScalableDimension": "dynamodb:index:WriteCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBWriteCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:48.641000+10:00" }, { "PolicyARN": "arn:aws:autoscaling:<region>:<account-id>:scalingPolicy:<uuid>:resource/dynamodb/table/<table-name>/index/<index-name>:policyName/$<full-gsi-name>-scaling-policy", "PolicyName":$<full-gsi-name>”, "ServiceNamespace": "dynamodb", "ResourceId": "table/<table-name>/index/<index-name>", "ScalableDimension": "dynamodb:index:ReadCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBReadCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:47.820000+10:00" } ] }
AWS Management Console
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/

    Wählen Sie bei AWS-Region Bedarf eine geeignete aus.

  2. Wählen Sie in der linken Navigationsleiste die Option Tables (Tabellen) aus. Wählen Sie auf der Seite Tables (Tabellen) den Namen der Tabelle aus.

  3. Wählen Sie auf der Seite mit den Tabellendetails die Option Zusätzliche Einstellungen aus, und überprüfen Sie dann die Auto Scaling-Einstellungen Ihrer Tabelle.

    DynamoDB-Tabellendetailseite mit Einstellungen für die auto Skalierung. Überprüfen Sie die bereitgestellte Kapazitätsauslastung und passen Sie sie nach Bedarf an.

    Erweitern Sie für Indizes den Abschnitt Indexkapazität, um die Einstellungen für die auto Skalierung des Index zu überprüfen.

    Abschnitt Indexkapazität der DynamoDB-Konsole. Überprüfen und verwalten Sie die Auto Scaling-Einstellungen für Indizes.

Bei Zielauslastungswerten von maximal 50 % sollten Sie Ihre Tabellenauslastungsmetriken prüfen, um festzustellen, ob eine zu geringe oder eine übermäßige Bereitstellung vorliegt.

So bewältigen Sie Workloads mit saisonalen Schwankungen

Stellen Sie sich folgendes Szenario vor: Ihre Anwendung läuft die meiste Zeit unter einem minimalen Durchschnittswert, doch das Auslastungsziel ist niedrig. Somit kann Ihre Anwendung schnell auf Ereignisse reagieren, die zu bestimmten Tageszeiten auftreten, Sie verfügen über genügend Kapazität und es kommt nicht zu Drosselungen. Ein solches Szenario kommt häufig vor, wenn eine Anwendung während der normalen Bürozeiten (9 bis 17 Uhr) sehr stark ausgelastet ist, außerhalb der Geschäftszeiten jedoch auf niedrigem Niveau läuft. Da einige Benutzer vor 9 Uhr beginnen, eine Verbindung herzustellen, verwendet die Anwendung diesen niedrigen Schwellenwert, um schnell hochzufahren und zu Spitzenzeiten die erforderliche Kapazität zu erreichen.

Dieses Szenario könnte wie folgt aussehen:

  • Zwischen 17 Uhr und 9 Uhr bleiben die ConsumedWriteCapacity-Einheiten zwischen 90 und 100.

  • Benutzer beginnen vor 9 Uhr, eine Verbindung mit der Anwendung herzustellen, und die Kapazitätseinheiten erhöhen sich erheblich (der Höchstwert, den Sie gesehen haben, ist 1500WCU)

  • Im Durchschnitt variiert Ihre Anwendungsnutzung während der Arbeitszeit zwischen 800 und 1 200.

Wenn das vorherige Szenario auch bei Ihnen anzutreffen ist, sollten Sie geplantes Auto Scaling in Betracht ziehen. Dabei könnte für Ihre Tabelle immer noch eine Auto-Scaling-Regel für die Anwendung konfiguriert sein, jedoch mit einer weniger aggressiven Zielauslastung, wobei die zusätzliche Kapazität nur in den von Ihnen benötigten Intervallen bereitgestellt wird.

Sie können AWS CLI die folgenden Schritte ausführen, um eine geplante Auto Scaling-Regel zu erstellen, die je nach Tageszeit und Wochentag ausgeführt wird.

  1. Registrieren Sie Ihre DynamoDB-Tabelle oder GSI als skalierbares Ziel bei. Application Auto Scaling Ein skalierbares Ziel ist eine Ressource, die Application Auto Scaling auf- und abskalieren kann.

    aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --min-capacity 90 \ --max-capacity 1500
  2. Richten Sie geplante Aktionen entsprechend Ihren Anforderungen ein.

    Für dieses Szenario werden wir zwei Regeln benötigen: eine zum Hochskalieren und eine zum Herunterskalieren. Die erste Regel zum Hochskalieren der geplanten Aktion:

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --scheduled-action-name my-8-5-scheduled-action \ --scalable-target-action MinCapacity=800,MaxCapacity=1500 \ --schedule "cron(45 8 ? * MON-FRI *)" \ --timezone "Australia/Brisbane"

    Die zweite Regel zum Herunterskalieren der geplanten Aktion:

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --scheduled-action-name my-5-8-scheduled-down-action \ --scalable-target-action MinCapacity=90,MaxCapacity=1500 \ --schedule "cron(15 17 ? * MON-FRI *)" \ --timezone "Australia/Brisbane"
  3. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass beide Regeln aktiviert wurden:

    aws application-autoscaling describe-scheduled-actions --service-namespace dynamodb

    Das Ergebnis sollte ungefähr wie folgt aussehen:

    { "ScheduledActions": [ { "ScheduledActionName": "my-5-8-scheduled-down-action", "ScheduledActionARN": "arn:aws:autoscaling:<region>:<account>:scheduledAction:<uuid>:resource/dynamodb/table/<table-name>:scheduledActionName/my-5-8-scheduled-down-action", "ServiceNamespace": "dynamodb", "Schedule": "cron(15 17 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "table/<table-name>", "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ScalableTargetAction": { "MinCapacity": 90, "MaxCapacity": 1500 }, "CreationTime": "2022-03-15T17:30:25.100000+10:00" }, { "ScheduledActionName": "my-8-5-scheduled-action", "ScheduledActionARN": "arn:aws:autoscaling:<region>:<account>:scheduledAction:<uuid>:resource/dynamodb/table/<table-name>:scheduledActionName/my-8-5-scheduled-action", "ServiceNamespace": "dynamodb", "Schedule": "cron(45 8 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "table/<table-name>", "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ScalableTargetAction": { "MinCapacity": 800, "MaxCapacity": 1500 }, "CreationTime": "2022-03-15T17:28:57.816000+10:00" } ] }

Im folgenden Bild ist ein Workload zu sehen, bei dem immer die Zielauslastung von 70 % beibehalten wird. Beachten Sie, dass die Auto-Scaling-Regeln weiterhin gelten und der Durchsatz nicht reduziert wird.

Der Durchsatz einer Tabelle bei 70% zielt auf eine Auslastung ab, auch wenn die Kapazität durch auto Skalierungsregeln angepasst wird.

Beim Heranzoomen können wir sehen, dass es einen Anstieg in der Anwendung gab, der den Schwellenwert für die auto Skalierung von 70% auslöste. Dadurch wurde die auto Skalierung aktiviert und die zusätzliche Kapazität bereitgestellt, die für die Tabelle erforderlich war. Das geplante Auto Scaling wirkt sich auf die Maximal- und Minimalwerte aus. Für ihre Einrichtung sind Sie zuständig.

Steigern Sie den Durchsatz einer DynamoDB-Tabelle, der die auto Skalierung einleitet, um die erforderliche zusätzliche Kapazität bereitzustellen.
auto Skalierungskonfiguration der DynamoDB-Tabelle: Zielauslastung und minimale und maximale Kapazitätswerte.

So bewältigen Sie stark schwankende Workloads mit unbekannten Mustern

In diesem Szenario verwendet die Anwendung ein sehr niedriges Auslastungsziel, da Sie die Anwendungsmuster noch nicht kennen und sicherstellen möchten, dass Ihr Workload nicht gedrosselt wird.

Sie sollten stattdessen die Verwendung des On-Demand-Kapazitätsmodus in Betracht ziehen. On-Demand-Tabellen eignen sich perfekt für stark schwankende Workloads, deren Datenverkehrsmuster Sie nicht kennen. Im On-Demand-Kapazitätsmodus zahlen Sie pro Anforderung für die Lese- und Schreibvorgänge, die Ihre Anwendung in Ihren Tabellen ausführt. Sie müssen nicht angeben, wie viel Lese- und Schreibdurchsatz Sie von Ihrer Anwendung erwarten, da DynamoDB Ihre Workloads umgehend anpasst, wenn diese größer oder kleiner werden.

So bewältigen Sie Workloads mit verknüpften Anwendungen

In diesem Szenario hängt die Anwendung von anderen Systemen ab. Dies kann beispielsweise in Batchverarbeitungsszenarien der Fall sein, bei denen es abhängig von Ereignissen in der Anwendungslogik zu starken Datenverkehrsspitzen kommen kann.

Möglicherweise möchten Sie eine benutzerdefinierte Auto-Scaling-Logik entwickeln, die auf diese Ereignisse reagiert und mit der Sie die Tabellenkapazität und TargetValues Ihren spezifischen Anforderungen entsprechend erhöhen können. Sie könnten von einer Kombination von AWS Diensten wie Lambda Amazon EventBridge und Step Functions profitieren und diese nutzen, um auf Ihre spezifischen Anwendungsanforderungen zu reagieren.