View a markdown version of this page

Prüfen Sie die Application Auto Scaling-Einstellungen Ihrer Tabelle - Amazon Keyspaces (für Apache Cassandra)

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.

Prüfen Sie die Application Auto Scaling-Einstellungen Ihrer Tabelle

Dieser Abschnitt bietet einen Überblick darüber, wie Sie die Application Auto Scaling-Einstellungen Ihrer Amazon Keyspaces-Tabellen auswerten können. Amazon Keyspaces Application Auto Scaling ist eine Funktion, die den Tabellendurchsatz auf der Grundlage Ihres Anwendungsdatenverkehrs und Ihrer Zielauslastungsmetrik verwaltet. Dadurch wird sichergestellt, dass Ihre Tabellen über die für Ihre Anwendungsmuster erforderliche Kapazität verfügen.

Der Application Auto Scaling-Service überwacht Ihre aktuelle Tabellennutzung und vergleicht sie mit dem Zielauslastungswert:TargetValue. Er benachrichtigt Sie, wenn es an der Zeit ist, die zugewiesene Kapazität zu erhöhen oder zu verringern.

Grundlegendes zu den Auto Scaling-Einstellungen Ihrer Anwendung

Die Festlegung des richtigen Werts für die Zielauslastung, den ersten Schritt und die Endwerte erfordert die Beteiligung Ihres Operations-Teams. Auf diese Weise können Sie die Werte auf der Grundlage der historischen Anwendungsnutzung, die zum Auslösen der Application Auto Scaling-Richtlinien verwendet wird, richtig definieren. Das Auslastungsziel ist der Prozentsatz Ihrer Gesamtkapazität, der innerhalb eines Zeitraums erreicht werden muss, bevor die Application Auto Scaling-Regeln gelten.

Wenn Sie ein hohes Auslastungsziel festlegen (ein Ziel von etwa 90%), bedeutet dies, dass Ihr Traffic für einen bestimmten Zeitraum über 90% liegen muss, bevor das Application 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 festlegen (ein Ziel unter 50%), bedeutet dies, dass Ihre Anwendung 50% der bereitgestellten Kapazität erreichen muss, bevor sie eine Application Auto Scaling-Richtlinie auslöst. Sofern Ihr Anwendungsdatenverkehr nicht extrem schnell zunimmt, führt dies in der Regel zu ungenutzter Kapazität und einer Ressourcenverschwendung.

Wie identifiziert man Tabellen mit niedriger Zielauslastung (<= 50%)

Sie können entweder AWS CLI oder verwenden AWS-Managementkonsole , um die Auto Scaling-Richtlinien TargetValues für Ihre Anwendung in Ihren Amazon Keyspaces-Ressourcen zu überwachen und zu identifizieren.

Anmerkung

Wenn Sie Tabellen mit mehreren Regionen im Modus für bereitgestellte Kapazität mit Amazon Keyspaces Auto Scaling verwenden, stellen Sie sicher, dass Sie die Amazon Keyspaces-API-Operationen verwenden, um die automatische Skalierung zu konfigurieren. Die zugrunde liegenden Application Auto Scaling-API-Operationen, die Amazon Keyspaces in Ihrem Namen aufruft, verfügen nicht über Funktionen für mehrere Regionen. Weitere Informationen finden Sie unter Sehen Sie sich die bereitgestellten Kapazitäten und Auto-Scaling-Einstellungen für eine Tabelle mit mehreren Regionen in Amazon Keyspaces an.

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

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

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

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

    aws application-autoscaling describe-scaling-policies --service-namespace cassandra --resource-id "keyspace/keyspace-name/table/table-name

    Die Werte für die Application Auto Scaling-Richtlinien sind unten hervorgehoben. Sie müssen sicherstellen, dass der Zielwert über 50% liegt, um eine Überbereitstellung zu vermeiden. Das Ergebnis sollte etwa wie folgt aussehen:

    { "ScalingPolicies": [ { "PolicyARN": "arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:<uuid>:resource/keyspaces/table/table-name-scaling-policy", "PolicyName": $<full-table-name>”, "ServiceNamespace": "cassandra", "ResourceId": "keyspace/keyspace-name/table/table-name", "ScalableDimension": "cassandra:table:WriteCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "KeyspacesWriteCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:48.641000+10:00" }, { "PolicyARN": "arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:<uuid>:resource/keyspaces/table/table-name-scaling-policy", "PolicyName":$<full-table-name>”, "ServiceNamespace": "cassandra", "ResourceId": "keyspace/keyspace-name/table/table-name", "ScalableDimension": "cassandra:table:ReadCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "KeyspacesReadCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:47.820000+10:00" } ] }
AWS-Managementkonsole
  1. Melden Sie sich bei der an AWS-Managementkonsole und navigieren Sie zur CloudWatch Serviceseite unter Erste Schritte mit dem. AWS-Managementkonsole Wählen Sie bei AWS-Region Bedarf das entsprechende 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. Überprüfen Sie auf der Seite „Tabellendetails“ auf der Registerkarte „Kapazität“ die Application Auto Scaling-Einstellungen Ihrer Tabelle.

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 schon vor 9 Uhr morgens eine Verbindung herstellen, 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 ConsumedWriteCapacityUnits-Einheiten zwischen 90 und 100.

  • Benutzer beginnen vor 9 Uhr, eine Verbindung zu der Anwendung herzustellen, und die Kapazitätseinheiten steigen erheblich an (der maximale Wert, den Sie gesehen haben, beträgt 1 500 WCU).

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

Wenn das vorherige Szenario auf Ihre Anwendung zutrifft, sollten Sie die automatische Skalierung von Anwendungen in Erwägung ziehen. Dabei könnte für Ihre Tabelle immer noch eine Application Auto Scaling-Regel konfiguriert sein, allerdings mit einer weniger aggressiven Zielauslastung, bei der die zusätzliche Kapazität nur in den von Ihnen benötigten Intervallen bereitgestellt wird.

Mithilfe der können Sie die AWS CLI folgenden Schritte ausführen, um eine geplante Auto Scaling-Regel zu erstellen, die auf der Grundlage der Tageszeit und des Wochentags ausgeführt wird.

  1. Registrieren Sie Ihre Amazon Keyspaces-Tabelle 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 cassandra \ --scalable-dimension cassandra:table:WriteCapacityUnits \ --resource-id keyspace/keyspace-name/table/table-name \ --min-capacity 90 \ --max-capacity 1500
  2. Richten Sie geplante Aktionen entsprechend Ihren Anforderungen ein.

    Sie benötigen zwei Regeln, um das Szenario abzudecken: eine für die Hochskalierung und eine weitere für die Verkleinerung. Die erste Regel zum Hochskalieren der geplanten Aktion wird im folgenden Beispiel gezeigt.

    aws application-autoscaling put-scheduled-action \ --service-namespace cassandra \ --scalable-dimension cassandra:table:WriteCapacityUnits \ --resource-id keyspace/keyspace-name/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 wird in diesem Beispiel gezeigt.

    aws application-autoscaling put-scheduled-action \ --service-namespace cassandra \ --scalable-dimension cassandra:table:WriteCapacityUnits \ --resource-id keyspace/keyspace-name/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 cassandra

    Das Ergebnis sollte ungefähr wie folgt aussehen:

    { "ScheduledActions": [ { "ScheduledActionName": "my-5-8-scheduled-down-action", "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:111122223333:scheduledAction:<uuid>:resource/keyspaces/table/table-name:scheduledActionName/my-5-8-scheduled-down-action", "ServiceNamespace": "cassandra", "Schedule": "cron(15 17 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "keyspace/keyspace-name/table/table-name", "ScalableDimension": "cassandra: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:us-east-1:111122223333:scheduledAction:<uuid>:resource/keyspaces/table/table-name:scheduledActionName/my-8-5-scheduled-action", "ServiceNamespace": "cassandra", "Schedule": "cron(45 8 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "keyspace/keyspace-name/table/table-name", "ScalableDimension": "cassandra: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 Regeln für die automatische Skalierung weiterhin gelten und der Durchsatz nicht reduziert wird.

Ein Diagramm, das die Schreibnutzung in Einheiten pro Sekunde zeigt und die bereitgestellte Kapazität mit der verbrauchten Kapazität über einen Zeitraum von einem Tag vergleicht.

Wenn wir die Ansicht vergrößern, sehen wir, dass es in der Anwendung einen Spitzenwert gegeben hat, der den 70%-Schwellenwert für Auto Scaling ausgelöst hat, sodass Auto Scaling aktiviert und die für die Tabelle benötigte zusätzliche Kapazität bereitgestellt wurde. Die geplante Auto-Scaling-Aktion wirkt sich auf die Höchst- und Mindestwerte aus, und es liegt in Ihrer Verantwortung, diese einzurichten.

Eine detailliertere Ansicht des Diagramms, das die Schreibnutzung in Einheiten pro Sekunde zeigt und die bereitgestellte Kapazität mit der verbrauchten Kapazität vergleicht, wobei eine bestimmte Zeit vergrößert wird.
Zeigt die Detailansicht des Diagramms an, in dem die Schreibnutzung in Einheiten pro Sekunde im Vergleich der bereitgestellten und der verbrauchten Kapazität über einen Zeitraum von einem Tag verglichen wird.

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 bei Ihrem Workload keine Durchsatzfehler bei niedriger Kapazität auftreten.

Erwägen Sie stattdessen den On-Demand-Kapazitätsmodus. On-demand Tabellen eignen sich perfekt für hohe Workloads, bei denen Sie die Datenverkehrsmuster 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 Amazon Keyspaces Ihre Workloads sofort berücksichtigt, wenn sie hoch- oder herunterfahren.

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.

Erwägen Sie, eine benutzerdefinierte Logik für die automatische Skalierung von Anwendungen zu entwickeln, die auf Ereignisse reagiert, bei denen Sie die Tabellenkapazität erhöhen können, und zwar TargetValues je nach Ihren spezifischen Anforderungen. Sie könnten von einer Kombination von AWS Diensten wie Λ Amazon EventBridge und Step Functions profitieren und diese verwenden, um auf Ihre spezifischen Anwendungsanforderungen zu reagieren.