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.
Problembehandlung Amazon Kinesis Data Streams Streams-Produzenten
Die folgenden Themen bieten Lösungen für häufig auftretende Probleme mit Amazon Kinesis Data Streams Streams-Herstellern:
Meine Producer-Anwendung schreibt langsamer als erwartet
Die häufigsten Gründe dafür, dass der Schreibdurchsatz langsamer als erwartet ist, sind:
Die Servicelimits wurden überschritten
Um herauszufinden, ob die Dienstlimits überschritten werden, überprüfen Sie, ob Ihr Producer Durchsatzausnahmen für den Service ausgibt, und überprüfen Sie, welche API Operationen gedrosselt werden. Beachten Sie, dass es je nach Aufruf verschiedene Limits gibt, siehe Kontingente und -Einschränkungen. Beispielsweise gelten zusätzlich zu den bekannten Limits für Schreib- und Lesevorgänge auf Shard-Ebene folgenden Limits auf Stream-Ebene:
Die Operationen CreateStream
DeleteStream
, ListStreams
, GetShardIterator
und MergeShards
dürfen maximal 5 mal pro Sekunde aufgerufen werden. Die DescribeStream
-Operation ist auf 10 Aufrufe pro Sekunde begrenzt. Die DescribeStreamSummary
-Operation ist auf 20 Aufrufe pro Sekunde begrenzt.
Wenn diese Aufrufe nicht das Problem sind, stellen Sie sicher, dass Sie einen Partitionsschlüssel ausgewählt haben, mit dem Sie die PUT-Operationen gleichmäßig auf alle Shards verteilen können, und dass Sie keinen Partitionsschlüssel haben, der die Service Limits ausschöpft, wenn der Rest dies nicht tut. Dazu müssen Sie den Spitzendurchsatz messen und die Anzahl der Shards im Stream berücksichtigen. Weitere Informationen zum Verwalten von Streams finden Sie unter Kinesis-Datenstreams erstellen und verwalten.
Tipp
Denken Sie daran, bei Berechnungen zur Durchsatzdrosselung auf das nächste Kilobyte aufzurunden, wenn Sie die Operation mit einem Datensatz verwenden PutRecord, während bei der Operation mit mehreren Datensätzen die Gesamtsumme der Datensätze in PutRecordsjedem Aufruf abgerundet wird. Eine PutRecords
-Anforderung mit 600 Datensätzen und einer Größe von 1,1 KB wird beispielsweise nicht gedrosselt.
Ich möchte meinen Producer optimieren
Bevor Sie mit der Optimierung Ihres Producers beginnen, müssen Sie die folgenden wichtigen Aufgaben erledigen. Bestimmen Sie zunächst den gewünschten Spitzenwert hinsichtlich Datensatzgröße und Datensätze pro Sekunde. Schließen Sie dann die Stream-Kapazität als Begrenzungsfaktor aus (Die Servicelimits wurden überschritten). Nutzen Sie die folgenden Tipps zur Fehlerbehebung und Optimierungsanleitungen für die beiden häufigsten Produzententypen, wenn Sie die Stream-Kapazität als Begrenzungsfaktor ausgeschlossen haben.
Großer Produzent
Ein großer Hersteller läuft normalerweise von einem lokalen Server oder einer EC2 Amazon-Instance aus. Für Kunden, die einen höheren Durchsatz eines großen Produzenten benötigen, ist in der Regel die Latenz pro Datensatz entscheidend. Zu den Strategien für den Umgang mit Latenz gehören die folgenden: Wenn der Kunde Datensätze per Mikrobatch/Puffer speichern kann, verwenden Sie die Kinesis Producer Library (die über eine erweiterte Aggregationslogik verfügt), die Operation mit mehreren Datensätzen oder aggregieren Sie Datensätze zu einer größeren Datei PutRecords, bevor Sie die Operation mit einem Datensatz verwenden. PutRecord Wenn Sie keine Stapel bilden und keine Pufferung verwenden können, nutzen Sie mehrere Threads, um gleichzeitig in Service Kinesis Data Streams schreiben zu können. Zu diesen AWS SDK for Java und anderen SDKs gehören asynchrone Clients, die dies mit sehr wenig Code bewerkstelligen können.
Kleiner Produzent
Eine kleiner Produzent ist in der Regel eine mobile App, ein IoT-Gerät oder ein Webclient. Wenn es sich um eine mobile App handelt, empfehlen wir, den PutRecords
Vorgang oder den Kinesis Recorder auf dem AWS Handy SDKs zu verwenden. Weitere Informationen finden Sie in den Handbüchern „ AWS Mobile SDK for Android Erste Schritte“ und „ AWS Mobile SDK for iOS Erste Schritte“. Mobile Anwendungen müssen Verbindungsunterbrechungen bewältigen und benötigen eine Art Stapeleingabe, beispielsweise PutRecords
. Wenn Sie aus irgendeinem Grund keine Stapel bilden können, lesen Sie sich die oben stehenden Informationen zu großen Produzenten durch. Ist der Produzent ein Browser, ist die Menge der generierten Dateien in der Regel sehr klein. Allerdings platzieren Sie PUT-Operationen im kritischen Pfad der Anwendung. Dies wird von uns nicht empfohlen.
Ich erhalte eine Fehlermeldung mit der Genehmigung eines nicht autorisierten KMS Master-Keys
Dieser Fehler tritt auf, wenn eine Producer-Anwendung ohne Berechtigungen für den KMS Masterschlüssel in einen verschlüsselten Stream schreibt. Informationen zum Zuweisen von Berechtigungen für den Zugriff auf einen KMS Schlüssel einer Anwendung finden Sie unter Verwenden von Schlüsselrichtlinien in AWS KMS und Verwenden von IAM Richtlinien mit AWS KMS.