Erreurs courantes provenant du QLDB pilote Amazon - Base de données Amazon Quantum Ledger (AmazonQLDB)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Erreurs courantes provenant du QLDB pilote Amazon

Important

Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre.

Cette section décrit les erreurs d'exécution qui peuvent être générées par le QLDB pilote Amazon lors de l'interaction avec la QLDBsession API.

Vous trouverez ci-dessous une liste des exceptions courantes renvoyées par le pilote. Chaque exception inclut un message d'erreur spécifique, suivi d'une brève description et de suggestions de solutions possibles.

CapacityExceededException

Message : Capacité dépassée

Amazon QLDB a rejeté la demande car elle dépassait la capacité de traitement du registre. QLDBapplique une limite d'échelle interne par registre afin de maintenir la santé et les performances du service. Cette limite varie en fonction de la charge de travail de chaque demande individuelle. Par exemple, une demande peut avoir une charge de travail accrue si elle effectue des transactions de données inefficaces, telles que des analyses de tables résultant d'une requête qualifiée non liée à un index.

Nous vous recommandons d'attendre avant de réessayer la demande. Si votre application rencontre régulièrement cette exception, optimisez vos relevés et diminuez le taux et le volume des demandes que vous envoyez au registre. Parmi les exemples d'optimisation des instructions, citons l'exécution de moins d'instructions par transaction et le réglage des index de vos tables. Pour savoir comment optimiser les instructions et éviter les scans de tables, consultezOptimisation des performances des requêtes.

Nous vous recommandons également d'utiliser la dernière version du QLDB pilote. Le pilote applique une politique de nouvelle tentative par défaut qui utilise Exponential Backoff et Jitter pour réessayer automatiquement en cas d'exceptions telles que celle-ci. Le concept du recul exponentiel consiste à utiliser des temps d'attente de plus en plus longs entre les tentatives pour des réponses d'erreur consécutives.

InvalidSessionException

Message : Transaction transactionId a expiré

Une transaction a dépassé sa durée de vie maximale. Une transaction peut être exécutée pendant 30 secondes au maximum avant d'être validée. Passé ce délai, tout travail effectué sur la transaction est QLDB rejeté et la session est supprimée. Cette limite protège le client contre les fuites de sessions en démarrant des transactions et non en les validant ou en les annulant.

S'il s'agit d'une exception courante dans votre application, il est probable que l'exécution des transactions soit tout simplement trop longue. Si l'exécution des transactions prend plus de 30 secondes, optimisez vos relevés pour accélérer les transactions. Parmi les exemples d'optimisation des instructions, citons l'exécution de moins d'instructions par transaction et le réglage des index de vos tables. Pour plus d’informations, consultez Optimisation des performances des requêtes.

InvalidSessionException

Message : Séance sessionId a expiré

QLDBa abandonné la session car elle dépassait sa durée de vie totale maximale. QLDBannule les sessions au bout de 13 à 17 minutes, quelle que soit la transaction active. Les sessions peuvent être perdues ou perturbées pour un certain nombre de raisons, telles qu'une panne matérielle, une défaillance du réseau ou le redémarrage d'applications. Impose donc QLDB une durée de vie maximale aux sessions afin de garantir la résilience du logiciel client en cas d'échec de session.

Si vous rencontrez cette exception, nous vous recommandons d'acquérir une nouvelle session et de réessayer la transaction. Nous recommandons également d'utiliser la dernière version du QLDB pilote, qui gère le pool de sessions et son état de santé pour le compte de l'application.

InvalidSessionException

Message : Aucune session de ce type

Le client a essayé d'effectuer une transaction en QLDB utilisant une session qui n'existe pas. En supposant que le client utilise une session qui existait auparavant, il est possible que la session n'existe plus pour l'une des raisons suivantes :

  • Si une session est impliquée dans une défaillance interne du serveur (c'est-à-dire une erreur avec le code de HTTP réponse 500), vous QLDB pouvez choisir de supprimer complètement la session plutôt que d'autoriser le client à effectuer une transaction avec une session dont l'état est incertain. Ensuite, toute tentative de nouvelle tentative sur cette session échoue avec cette erreur.

  • Les sessions expirées sont finalement oubliées parQLDB. Ensuite, toute tentative de continuer à utiliser la session entraîne cette erreur, plutôt que l'erreur initialeInvalidSessionException.

Si vous rencontrez cette exception, nous vous recommandons d'acquérir une nouvelle session et de réessayer la transaction. Nous recommandons également d'utiliser la dernière version du QLDB pilote, qui gère le pool de sessions et son état de santé pour le compte de l'application.

RateExceededException

Message : Le taux a été dépassé

QLDBlimitait un client en fonction de l'identité de l'appelant. QLDBapplique la régulation par région et par compte à l'aide d'un algorithme de régulation par compartiment à jetons. QLDBfait cela pour améliorer les performances du service et garantir une utilisation équitable pour tous les QLDB clients. Par exemple, essayer d'acquérir un grand nombre de sessions simultanées à l'aide de cette StartSessionRequest opération peut entraîner un ralentissement.

Pour préserver l'intégrité de votre application et limiter les ralentissements supplémentaires, vous pouvez réessayer cette exception en utilisant Exponential Backoff et Jitter. Le concept du recul exponentiel consiste à utiliser des temps d'attente de plus en plus longs entre les tentatives pour des réponses d'erreur consécutives. Nous vous recommandons d'utiliser la dernière version du QLDB pilote. Le pilote applique une politique de nouvelle tentative par défaut qui utilise un décalage et une instabilité exponentiels pour réessayer automatiquement en cas d'exceptions telles que celle-ci.

La dernière version du QLDB pilote peut également être utile si votre application est constamment limitée par QLDB les StartSessionRequest appels. Le pilote gère un pool de sessions qui sont réutilisées au cours des transactions, ce qui peut contribuer à réduire le nombre d'StartSessionRequestappels effectués par votre application. Pour demander une augmentation des API limites de régulation, contactez le AWS Support Centre.

LimitExceededException

Message : Dépassement de la limite de session

Un registre a dépassé son quota (également appelé limite) en ce qui concerne le nombre de sessions actives. Ce quota est défini dansQuotas et limites sur Amazon QLDB. Le nombre de sessions actives d'un registre est finalement constant, et les registres dont le quota est constamment proche du quota peuvent régulièrement être confrontés à cette exception.

Pour préserver l'intégrité de votre application, nous vous recommandons de réessayer cette exception. Pour éviter cette exception, assurez-vous de ne pas avoir configuré plus de 1 500 sessions simultanées à utiliser pour un seul registre pour tous les clients. Par exemple, vous pouvez utiliser la maxConcurrentTransactionsméthode du QLDBpilote Amazon pour Java pour configurer le nombre maximum de sessions disponibles dans une instance de pilote.

QldbClientException

Message : Un résultat diffusé en continu n'est valide que lorsque la transaction parent est ouverte

La transaction est clôturée et ne peut pas être utilisée pour récupérer les résultatsQLDB. Une transaction est clôturée lorsqu'elle est validée ou annulée.

Cette exception se produit lorsque le client travaille directement avec l'Transactionobjet et essaie d'en récupérer les résultats QLDB après avoir validé ou annulé une transaction. Pour pallier ce problème, le client doit lire les données avant de clôturer la transaction.