Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Errori comuni del driver Amazon QLDB
Importante
Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto, il 31/07/2025. Per ulteriori dettagli, consulta Migrare un registro Amazon QLDB su Amazon Aurora PostgreSQL
Di seguito è riportato un elenco di eccezioni comuni restituite dal driver. Ogni eccezione include il messaggio di errore specifico, seguito da una breve descrizione e suggerimenti per possibili soluzioni.
- CapacityExceededException
-
Messaggio:
capacità superata
Amazon QLDB ha rifiutato la richiesta perché superava la capacità di elaborazione del registro. QLDB impone un limite di scalabilità interno per registro per mantenere l'integrità e le prestazioni del servizio. Questo limite varia a seconda delle dimensioni del carico di lavoro di ogni singola richiesta. Ad esempio, una richiesta può comportare un carico di lavoro maggiore se esegue transazioni di dati inefficienti, ad esempio scansioni di tabelle risultanti da una query qualificata non indicizzata.
Ti consigliamo di attendere prima di riprovare la richiesta. Se la tua applicazione riscontra costantemente questa eccezione, ottimizza i rendiconti e riduci la frequenza e il volume delle richieste inviate al registro. Esempi di ottimizzazione dei rendiconti includono l'esecuzione di un minor numero di istruzioni per transazione e l'ottimizzazione degli indici delle tabelle. Per informazioni su come ottimizzare le istruzioni ed evitare le scansioni delle tabelle, consulta. Ottimizzazione delle prestazioni delle query
Si consiglia inoltre di utilizzare la versione più recente del driver QLDB. Il driver ha una politica di riprova predefinita che utilizza Exponential Backoff e Jitter
per riprovare automaticamente eccezioni come questa. Il concetto di backoff esponenziale consiste nell'utilizzare tempi di attesa progressivamente più lunghi tra un tentativo e l'altro per risposte di errore consecutive. - InvalidSessionException
-
Messaggio: La transazione è scaduta
transactionId
Una transazione ha superato la sua durata massima. Una transazione può durare fino a 30 secondi prima di essere confermata. Dopo questo limite di timeout, qualsiasi lavoro svolto sulla transazione viene rifiutato e QLDB scarta la sessione. Questo limite protegge il cliente dalla perdita di sessioni avviando le transazioni e non eseguendole o annullandole.
Se questa è un'eccezione comune nella tua applicazione, è probabile che le transazioni richiedano semplicemente troppo tempo per essere eseguite. Se l'esecuzione delle transazioni richiede più di 30 secondi, ottimizza i rendiconti per velocizzarle. Esempi di ottimizzazione dei rendiconti includono l'esecuzione di un minor numero di istruzioni per transazione e l'ottimizzazione degli indici delle tabelle. Per ulteriori informazioni, consulta Ottimizzazione delle prestazioni delle query.
- InvalidSessionException
-
Messaggio: la sessione è scaduta
sessionId
QLDB ha scartato la sessione perché ha superato la sua durata totale massima. QLDB elimina le sessioni dopo 13-17 minuti, indipendentemente da una transazione attiva. Le sessioni possono andare perse o compromesse per una serie di motivi, come guasti hardware, errori di rete o riavvii delle applicazioni. Pertanto, QLDB impone una durata massima delle sessioni per garantire che il software client sia resiliente agli errori delle sessioni.
Se riscontri questa eccezione, ti consigliamo di acquisire una nuova sessione e ritentare la transazione. Si consiglia inoltre di utilizzare la versione più recente del driver QLDB, che gestisce il pool di sessioni e il relativo stato per conto dell'applicazione.
- InvalidSessionException
-
Messaggio: sessione
inesistente
Il client ha provato a effettuare transazioni con QLDB utilizzando una sessione che non esiste. Supponendo che il client stia utilizzando una sessione che esisteva in precedenza, la sessione potrebbe non esistere più a causa di uno dei seguenti motivi:
-
Se una sessione è coinvolta in un errore interno del server (ovvero un errore con codice di risposta HTTP 500), QLDB potrebbe scegliere di ignorare completamente la sessione, anziché consentire al cliente di effettuare transazioni con una sessione di stato incerto. Quindi, qualsiasi tentativo di riprovare quella sessione fallisce con questo errore.
-
Le sessioni scadute vengono infine dimenticate da QLDB. Quindi, qualsiasi tentativo di continuare a utilizzare la sessione genera questo errore, anziché quello iniziale.
InvalidSessionException
Se riscontri questa eccezione, ti consigliamo di acquisire una nuova sessione e riprovare la transazione. Si consiglia inoltre di utilizzare la versione più recente del driver QLDB, che gestisce il pool di sessioni e il relativo stato per conto dell'applicazione.
-
- RateExceededException
-
Messaggio:
la velocità è stata superata
QLDB limitava un client in base all'identità del chiamante. QLDB applica la limitazione per regione e per account utilizzando un algoritmo di throttling del token bucket.
QLDB lo fa per migliorare le prestazioni del servizio e garantire un utilizzo equo per tutti i clienti QLDB. Ad esempio, il tentativo di acquisire un gran numero di sessioni simultanee utilizzando l' StartSessionRequest
operazione potrebbe comportare un rallentamento.Per mantenere l'integrità dell'applicazione e mitigare ulteriori limitazioni, puoi riprovare questa eccezione utilizzando Exponential Backoff e Jitter.
Il concetto di backoff esponenziale consiste nell'utilizzare tempi di attesa progressivamente più lunghi tra un tentativo e l'altro per risposte di errore consecutive. Si consiglia di utilizzare la versione più recente del driver QLDB. Il driver ha una politica di riprova predefinita che utilizza il backoff e il jitter esponenziali per riprovare automaticamente eccezioni come questa. L'ultima versione del driver QLDB può essere utile anche se l'applicazione viene costantemente limitata da QLDB per le chiamate.
StartSessionRequest
Il driver gestisce un pool di sessioni che vengono riutilizzate tra le transazioni, il che può aiutare a ridurre il numero di chiamate effettuate dall'applicazione.StartSessionRequest
Per richiedere un aumento dei limiti di limitazione delle API, contatta il Centro.Supporto AWS - LimitExceededException
-
Messaggio: è stato
superato il limite
di sessioneUn registro ha superato la quota (nota anche come limite) sul numero di sessioni attive. Questa quota è definita in. Quote e limiti in Amazon QLDB Il conteggio delle sessioni attive di un libro mastro alla fine è costante e i libri contabili che si avvicinano costantemente alla quota potrebbero periodicamente vedere questa eccezione.
Per mantenere l'integrità dell'applicazione, ti consigliamo di riprovare questa eccezione. Per evitare questa eccezione, assicurati di non aver configurato più di 1.500 sessioni simultanee da utilizzare per un singolo registro su tutti i client. Ad esempio, puoi utilizzare il maxConcurrentTransactions
metodo del driver Amazon QLDB per Java per configurare il numero massimo di sessioni disponibili in un'istanza di driver. - QldbClientException
-
Messaggio:
un risultato in streaming è valido solo quando la transazione principale
è apertaLa transazione è chiusa e non può essere utilizzata per recuperare i risultati da QLDB. Una transazione si chiude quando viene confermata o annullata.
Questa eccezione si verifica quando il client lavora direttamente con l'
Transaction
oggetto e sta cercando di recuperare i risultati da QLDB dopo aver eseguito o annullato una transazione. Per mitigare questo problema, il cliente deve leggere i dati prima di chiudere la transazione.