Ausnahmefehler beim bereitgestellten Durchsatz - Amazon Kinesis Data Streams

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.

Ausnahmefehler beim bereitgestellten Durchsatz

Ausnahmefehler mit Überschreitung des bereitgestellten Durchsatzes (HTTP 400) treten auf, wenn die Anforderungsrate für einen Kinesis-Stream die Durchsatzgrenzen eines oder mehrerer Shards überschreitet. Jeder Shard hat spezifische Lese- und Schreibkapazitätsgrenzen, und eine Überschreitung dieser Grenzwerte löst diese Ausnahme aus. Zu den Szenarien, die zu dieser Ausnahme führen, gehören: plötzliche Spitzen bei der Datenaufnahme oder beim Datenverbrauch, unzureichende Shard-Kapazität für das zu verarbeitende Datenvolumen oder ungleichmäßige Verteilung der Partitionsschlüssel.

Empfehlungen für den Umgang mit Ausnahmen
  • Implementieren Sie exponentielle Back-off- und Wiederholungsmechanismen.

  • Erhöhen Sie die Anzahl der Shards, um einen höheren Durchsatz zu erreichen.

  • Stellen Sie sicher, dass die Partitionsschlüssel ordnungsgemäß verteilt sind.

  • Überwachen Sie die Stream-Metriken.

Darüber hinaus hilft die Verwendung des On-Demand-Kapazitätsmodus von Kinesis dabei, Workloads automatisch anzupassen und das Auftreten dieser Ausnahme zu minimieren. Weitere Informationen finden Sie unter Was ist AWS Fault Injection Service?

Anmerkung

Probleme mit unsachgemäßer Verteilung liegen außerhalb der Möglichkeiten der automatischen Skalierung im On-Demand-Modus.

Um ein einfaches Experiment durchzuführen
  1. Verwenden Sie Basismetriken: Zeichnen Sie vor dem Testen normale Durchsatzmuster auf.

  2. Erstellen Sie ein Experiment: Verwenden Sie die aws:kinesis:inject-api-provisioned-throughput-exception Aktion.

  3. Konfigurieren Sie die Intensität: Beginnen Sie mit einer Anforderungsdrosselung von 25%.

  4. Überwachen Sie die Antworten: Überprüfen Sie die Wiederholungslogik mit exponentiellem Back-off.

  5. Überprüfen Sie die Skalierung: Vergewissern Sie sich, dass die auto-scaling die Aktivierung auslöst.

  6. Überprüfen Sie die Alarme: Stellen Sie sicher, dass die CloudWatch Alarme wie erwartet laufen.

Die Anwendungen sollten geeignete Back-off-StrategienWriteProvisionedThroughputExceeded, Überwachungs- und ReadProvisionedThroughputExceeded Metriken implementieren und gegebenenfalls eine Shard-Skalierung auslösen.

Einzelheiten der Aktion
  • Ressourcentyp: IAM-Rolle ARN

  • Zieloperationen:PutRecord,, PutRecords GetRecords

  • Fehlercode: ProvisionedThroughputExceededException (HTTP 400)

  • Beschreibung: simuliert Szenarien, in denen die Anforderungsrate die Kapazitätsgrenzen der Shards überschreitet, und testet die Drosselung von Anwendungen und die Skalierung der Antworten.

Parameters
  • IAM-Rolle ARN: Die Rolle, die Ihre Anwendung für Kinesis Data Streams Streams-Operationen verwendet.

  • Operationen: Zieloperationen:PutRecord,,PutRecords. GetRecords

  • Ressourcenliste: die spezifischen Stream-Namen oder Shard-Identifikatoren.

  • Dauer: Die Versuchsdauer, d. h. die Dauer zwischen einer Minute und 12 Stunden. In der AWS FIS API ist der Wert eine Zeichenfolge im ISO 8601-Format. PT1M steht beispielsweise für eine Minute. In der AWS FIS Konsole geben Sie die Anzahl der Sekunden, Minuten oder Stunden ein.

  • Intensität: Der Prozentsatz der Drosselungsanfragen.

Erforderliche Berechtigungen
  • kinesis:InjectApiError

Beispiel für eine Versuchsvorlage

Das folgende Beispiel zeigt eine bereitgestellte Durchsatzausnahme für alle Anfragen bis zu 5 Kinesis Data-Streams mit dem angegebenen Tag. AWS FIS wählt die Streams, die beeinflusst werden sollen, nach dem Zufallsprinzip aus. Nach 5 Minuten ist der Fehler behoben.

{ "description": "Kinesis stream experiment", "targets": { "KinesisStreams-Target-1": { "resourceType": "aws:kinesis:stream", "resourceTags": { "tag-key": "tag-value" }, "selectionMode": "COUNT(5)" } }, "actions": { "kinesis": { "actionId": "aws:kinesis:stream-provisioned-throughput-exception", "description": "my-stream", "parameters": { "duration": "PT5M", "percentage": "100", "service": "kinesis" }, "targets": { "KinesisStreams": "KinesisStreams-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name", "tags": {}, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "fail" } }

Beispiel für ein Experiment, Rollenberechtigungen

Mit der folgenden Berechtigung können Sie die aws:kinesis:stream-expired-iterator-exception Aktionen aws:kinesis:stream-provisioned-throughput-exception und für einen bestimmten Stream ausführen, die sich auf 50% der Anfragen auswirken.