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.
Häufige Fehler des QLDB Amazon-Treibers
Wichtig
Hinweis zum Ende des Supports: Bestandskunden können Amazon QLDB bis zum Ende des Supports am 31.07.2025 nutzen. Weitere Informationen finden Sie unter Migrieren eines Amazon QLDB Ledgers zu Amazon Aurora SQL Postgre
In diesem Abschnitt werden Laufzeitfehler beschrieben, die vom QLDB Amazon-Treiber bei der Interaktion mit der QLDBSitzung ausgelöst werden könnenAPI.
Im Folgenden finden Sie eine Liste von allgemeinen Ausnahmen, die vom Treiber zurückgegeben werden. Jede Ausnahme enthält die spezifische Fehlermeldung, gefolgt von einer kurzen Beschreibung und Vorschlägen für mögliche Lösungen.
- CapacityExceededException
-
Meldung:
Kapazität überschritten
Amazon QLDB lehnte die Anfrage ab, weil sie die Verarbeitungskapazität des Ledgers überschritten hatte. QLDBerzwingt ein internes Skalierungslimit pro Ledger, um den Zustand und die Leistung des Service aufrechtzuerhalten. Dieses Limit hängt von der Workload-Größe jeder einzelnen Anfrage ab. Eine Anforderung kann beispielsweise eine erhöhte Arbeitslast nach sich ziehen, wenn sie ineffiziente Datentransaktionen durchführt, z. B. Tabellenscans, die aus einer nicht indexqualifizierten Abfrage resultieren.
Wir empfehlen, dass Sie warten, bevor Sie die Anfrage erneut versuchen. Wenn Ihre Anwendung immer wieder auf diese Ausnahme stößt, optimieren Sie Ihre Kontoauszüge und reduzieren Sie die Anzahl und das Volumen der Anfragen, die Sie an das Hauptbuch senden. Beispiele für die Optimierung von Kontoauszügen sind die Ausführung von weniger Kontoauszügen pro Transaktion und die Optimierung Ihrer Tabellenindizes. Informationen darüber, wie Sie Anweisungen optimieren und Tabellenscans vermeiden können, finden Sie unterOptimierung der Abfrageleistung.
Wir empfehlen außerdem, die neueste Version des QLDB Treibers zu verwenden. Der Treiber verfügt über eine standardmäßige Wiederholungsrichtlinie, die Exponential Backoff und Jitter
verwendet, um bei solchen Ausnahmen automatisch erneut zu versuchen. Das Konzept des exponentiellen Backoffs besteht darin, bei aufeinanderfolgenden Fehlerantworten immer längere Wartezeiten zwischen Wiederholungsversuchen zu verwenden. - InvalidSessionException
-
Nachricht: Transaktion
transactionId
ist abgelaufenEine Transaktion hat ihre maximale Lebensdauer überschritten. Eine Transaktion kann bis zu 30 Sekunden lang ausgeführt werden, bevor sie bestätigt wird. Nach Ablauf dieses Zeitlimits werden alle an der Transaktion ausgeführten Arbeiten zurückgewiesen und die Sitzung wird QLDB verworfen. Dieses Limit schützt den Client davor, Sessions unzugänglich zu machen, indem Transaktionen gestartet werden, ohne sie festzuschreiben oder zu stornieren.
Wenn dies eine häufige Ausnahme in Ihrer Anwendung ist, ist es wahrscheinlich, dass die Ausführung von Transaktionen einfach zu lange dauert. Wenn die Transaktionslaufzeit länger als 30 Sekunden dauert, optimieren Sie Ihre Kontoauszüge, um die Transaktionen zu beschleunigen. Beispiele für die Optimierung von Anweisungen sind die Ausführung von weniger Anweisungen pro Transaktion und die Optimierung Ihrer Tabellenindizes. Weitere Informationen finden Sie unter Optimierung der Abfrageleistung.
- InvalidSessionException
-
Nachricht: Sitzung
sessionId
ist abgelaufenQLDBhat die Sitzung verworfen, weil sie ihre maximale Gesamtlebensdauer überschritten hat. QLDBverwirft Sitzungen unabhängig von einer aktiven Transaktion nach 13—17 Minuten. Sitzungen können aus einer Reihe von Gründen verloren gehen oder beeinträchtigt werden, wie z. B. Hardwarefehler, Netzwerkfehler oder Anwendungsneustarts. QLDBErzwingt also eine maximale Lebensdauer für Sitzungen, um sicherzustellen, dass die Clientsoftware auch Sitzungsausfällen standhält.
Wenn diese Ausnahme auftritt, empfehlen wir, eine neue Sitzung abzurufen und die Transaktion erneut zu versuchen. Wir empfehlen außerdem, die neueste Version des QLDB Treibers zu verwenden, der den Sitzungspool und dessen Integrität im Namen der Anwendung verwaltet.
- InvalidSessionException
-
Meldung:
No such session
(Keine solche Sitzung)Der Client hat versucht, eine Transaktion QLDB über eine Sitzung durchzuführen, die nicht existiert. Unter der Annahme, dass der Client eine Sitzung verwendet, die zuvor existiert hat, ist die Sitzung möglicherweise aus einem der folgenden Gründe nicht mehr vorhanden:
-
Wenn eine Sitzung an einem internen Serverausfall beteiligt ist (d. h. ein Fehler mit dem HTTP Antwortcode 500), entscheiden Sie sich QLDB möglicherweise dafür, die Sitzung vollständig zu verwerfen, anstatt es dem Kunden zu ermöglichen, Transaktionen mit einer Sitzung mit unsicherem Status durchzuführen. Dann schlagen alle Wiederholungsversuche in dieser Sitzung mit diesem Fehler fehl.
-
Abgelaufene Sitzungen werden irgendwann von vergessen. QLDB Dann führen alle Versuche, die Sitzung weiter zu verwenden, zu diesem Fehler anstatt des ursprünglichen
InvalidSessionException
.
Wenn diese Ausnahme auftritt, empfehlen wir, eine neue Sitzung abzurufen und die Transaktion erneut zu versuchen. Wir empfehlen außerdem, die neueste Version des QLDB Treibers zu verwenden, der den Sitzungspool und dessen Integrität im Namen der Anwendung verwaltet.
-
- RateExceededException
-
Meldung:
The rate was exceeded
(Die Rate wurde überschritten)QLDBhat einen Client anhand der Identität des Anrufers gedrosselt. QLDBerzwingt mithilfe eines Token-Bucket-Drosselungsalgorithmus eine Drosselung pro Region und pro Konto.
QLDBtut dies, um die Leistung des Dienstes zu verbessern und eine faire Nutzung für alle Kunden sicherzustellen. QLDB Beispielsweise kann der Versuch, eine große Anzahl gleichzeitiger Sitzungen mit dem StartSessionRequest
-Vorgang abzurufen, zu einer Drosselung führen.Um den korrekten Anwendungszustand aufrechtzuerhalten und eine weitere Drosselung zu verringern, können Sie diese Ausnahme mit exponentiellem Backoff und Jitter
wiederholen. Das Konzept des exponentiellen Backoffs besteht darin, bei aufeinanderfolgenden Fehlerantworten immer längere Wartezeiten zwischen Wiederholungsversuchen zu verwenden. Wir empfehlen, die neueste Version des Treibers zu verwenden. QLDB Der Treiber verfügt über eine standardmäßige Wiederholungsrichtlinie, die exponentielles Backoff und Jitter verwendet, um bei solchen Ausnahmen automatisch erneut zu versuchen. Die neueste Version des QLDB Treibers kann auch hilfreich sein, wenn Ihre Anwendung ständig für Anrufe gedrosselt wird. QLDB
StartSessionRequest
Der Treiber verwaltet einen Pool von Sitzungen, die transaktionsübergreifend wiederverwendet werden, was dazu beitragen kann, die Anzahl derStartSessionRequest
Aufrufe zu reduzieren, die Ihre Anwendung tätigt. Wenn Sie eine Erhöhung der API Drosselungslimits beantragen möchten, wenden Sie sich an das Center.AWS Support - LimitExceededException
-
Meldung:
Exceeded the session limit
(Sitzungslimit überschritten)Ein Ledger hat sein Kontingent (auch als Limit bezeichnet) für die Anzahl aktiver Sitzungen überschritten. Dieses Kontingent ist in Kontingente und Limits bei Amazon QLDB definiert. Die Anzahl aktiver Sitzungen eines Ledgers ist schließlich konsistent, und Ledger, die konsistent in der Nähe des Kontingents ausgeführt werden, erfahren diese Ausnahme möglicherweise in regelmäßigen Abständen.
Um die Integrität Ihrer Anwendung aufrechtzuerhalten, empfehlen wir, bei dieser Ausnahme einen erneuten Versuch zu machen. Um diese Ausnahme zu vermeiden, stellen Sie sicher, dass Sie nicht mehr als 1.500 gleichzeitige Sitzungen für ein einzelnes Ledger über alle Clients hinweg konfiguriert haben. Sie können beispielsweise die maxConcurrentTransactions
Methode des QLDBAmazon-Treibers für Java verwenden, um die maximale Anzahl verfügbarer Sitzungen in einer Treiberinstanz zu konfigurieren. - QldbClientException
-
Meldung:
A streamed result is only valid when the parent transaction is open
(Ein gestreamtes Ergebnis ist nur gültig, wenn die übergeordnete Transaktion geöffnet ist)Die Transaktion ist abgeschlossen und kann nicht zum Abrufen der Ergebnisse von verwendet werdenQLDB. Eine Transaktion wird geschlossen, wenn sie entweder festgeschrieben oder storniert wurde.
Diese Ausnahme tritt auf, wenn der Client direkt mit dem
Transaction
Objekt arbeitet und versucht, Ergebnisse abzurufen, QLDB nachdem er eine Transaktion festgeschrieben oder abgebrochen hat. Um dieses Problem zu beheben, muss der Client die Daten lesen, bevor er die Transaktion schließt.