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 QLDB driver Amazon
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 Amazon QLDB Ledger ad Amazon Aurora Postgre
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 libro mastro. QLDBimpone un limite di scalabilità interno per registro per mantenere l'integrità e le prestazioni del servizio. Questo limite varia in base alla dimensione 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 QLDB driver. 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: Transazione
transactionId
è scadutoUna 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 la sessione viene QLDB annullata. 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: sessione
sessionId
è scadutoQLDBha scartato la sessione perché ha superato la sua durata totale massima. QLDBelimina le sessioni dopo 13-17 minuti, indipendentemente dalla transazione attiva. Le sessioni possono andare perse o compromesse per diversi motivi, ad esempio 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 QLDB driver, che gestisce il pool di sessioni e il relativo stato per conto dell'applicazione.
- InvalidSessionException
-
Messaggio:
sessione
inesistenteIl client ha provato a effettuare una transazione 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 HTTP risposta 500), è QLDB possibile 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 QLDB driver, che gestisce il pool di sessioni e il relativo stato per conto dell'applicazione.
-
- RateExceededException
-
Messaggio:
la velocità è stata superata
QLDBha limitato un client in base all'identità del chiamante. QLDBimpone la limitazione per regione e per account utilizzando un algoritmo di throttling del token bucket.
QLDBlo fa per migliorare le prestazioni del servizio e garantire un utilizzo equo per tutti i clienti. QLDB Ad esempio, il tentativo di acquisire un numero elevato 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. La versione più recente del QLDB driver può essere utile anche se l'applicazione viene costantemente limitata per le chiamate. QLDB
StartSessionRequest
Il driver gestisce un pool di sessioni che vengono riutilizzate tra le transazioni, il che può aiutare a ridurre il numero diStartSessionRequest
chiamate effettuate dall'applicazione. Per richiedere un aumento dei limiti di API limitazione, contatta il Centro.AWS Support - 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 QLDBdriver Amazon 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 è aperta
La 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 QLDB dopo aver commesso o annullato una transazione. Per mitigare questo problema, il cliente deve leggere i dati prima di chiudere la transazione.