Come posso prevenire un aumento del backlog di messaggi nella mia coda Amazon SQS?

Ultimo aggiornamento: 26/08/2021

Il backlog dei messaggi nella coda Amazon Simple Queue Service (Amazon SQS) è in aumento. Perché questo accade e come posso evitare che il backlog aumenti?

Breve descrizione

Code SQS standard e FIFO

Il backlog dei messaggi aumenta nelle seguenti circostanze:

  • I produttori inviano messaggi a una velocità maggiore di quella con cui i messaggi vengono utilizzati.
  • I consumatori non eliminano i messaggi entro il periodo di timeout visibilità. Quando si esegue il polling della coda SQS, i messaggi riappaiono nella coda.

Code SQS FIFO

Per le code SQS FIFO (First-In-First-Out), un aumento del backlog dei messaggi può anche derivare da uno dei seguenti elementi:

  • Il limite del buffer di 20.000 messaggi della coda FIFO.
  • Un messaggio appartenente a un gruppo di messaggi è bloccato con un consumatore, impedendo l'elaborazione di altri messaggi dello stesso gruppo di messaggi.

Risoluzione

Segui queste best practice per evitare che il backlog dei messaggi aumenti.

Code SQS standard e FIFO

  • Imposta il timeout visibilità ottimale della coda SQS per consentire al consumatore di eliminare i messaggi dopo averli elaborati entro il periodo di timeout visibilità. Se non sai quanto tempo ci vuole per elaborare un messaggio, crea un heartbeat per il processo del consumatore. Specifica il timeout visibilità iniziale (ad esempio, 2 minuti). Quindi, se il consumatore ha bisogno di più tempo per elaborare il messaggio, continua ad aumentare il timeout visibilità utilizzando la chiamata API ChangeMessageVisibility.
  • Aumenta le dimensioni del batch quando effettui chiamate API ReceiveMessage. Imposta il valore del parametro MaxNumberOfMessages su più di 1 e fino a un massimo di 10.
  • Monitora il parametro della coda SQS Approximate Number of Messages (Numero approssimativo di messaggi visibili). Questo parametro consente di vedere se i produttori iniziano a produrre messaggi a una velocità superiore a quella a cui i consumatori possono utilizzarli. Per dimensionare orizzontalmente, aumenta il numero di consumatori o clienti che utilizzano la coda SQS o aumenta il numero di thread che effettuano il polling della coda.

Code SQS FIFO

Buffer di 20.000 messaggi

Le code FIFO consentono un massimo di 20.000 messaggi in corso. I messaggi in corso includono quelli ricevuti da una coda da un utente, ma non ancora eliminati dalla coda. Se raggiungi la quota di 20.000 unità, Amazon SQS non restituisce messaggi di errore. Una coda FIFO esamina i primi 20.000 messaggi per determinare i gruppi di messaggi disponibili. Se hai un backlog di messaggi in un singolo gruppo di messaggi, non è possibile utilizzare i messaggi di altri gruppi di messaggi finché non vengono consumati correttamente i messaggi del backlog.

Dimensionamento dei gruppi di messaggi

I messaggi che appartengono allo stesso gruppo di messaggi vengono elaborati uno per uno, nell'ordine relativo al gruppo di messaggi. Quando si ricevono messaggi con più ID gruppo di messaggi, Amazon SQS tenta innanzitutto di restituire il maggior numero possibile di messaggi con lo stesso ID gruppo di messaggi. Ciò consente ad altri utenti di elaborare messaggi con un ID gruppo di messaggi diverso. Quando i messaggi che appartengono a un ID gruppo di messaggi specifico sono invisibili, nessun altro consumatore può elaborare messaggi con lo stesso ID gruppo di messaggi. Tuttavia, i consumatori possono elaborare messaggi provenienti da altri gruppi di messaggi. Prova ad aumentare il numero di gruppi di messaggi in cui l'ordine non è importante.


Questo articolo ti è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?