Comment puis-je éviter une augmentation du backlog de messages dans ma file d'attente Amazon SQS ?

Lecture de 4 minute(s)
0

Le backlog de messages dans ma file d'attente Amazon Simple Queue Service (Amazon SQS) a augmenté et je souhaite éviter les augmentations.

Brève description

Files d'attente SQS standard et FIFO

Le backlog de messages augmente dans les circonstances suivantes :

  • Les producteurs envoient des messages plus rapidement que les messages ne sont consommés.
  • Les consommateurs ne suppriment pas les messages pendant le délai de visibilité. Lorsque la file SQS est interrogée, les messages réapparaissent dans la file d'attente.

Files d'attente SQS FIFO

Pour les files d'attente SQS FIFO (First-In-First-Out), une augmentation du backlog de messages peut également résulter de l'un des facteurs suivants :

  • La limite de mémoire tampon de 120 000 messages de la file d'attente FIFO.
  • Un message appartenant à un groupe de messages est bloqué auprès d'un utilisateur, ce qui empêche le traitement des autres messages du même groupe de messages.

Résolution

Suivez ces bonnes pratiques pour éviter une augmentation du backlog de messages.

Files d'attente SQS standard et FIFO

  • Définissez le délai de visibilité optimal de la file d'attente SQS pour permettre au consommateur de supprimer les messages après les avoir traités dans le délai de visibilité. Si vous ne savez pas combien de temps est nécessaire pour traiter un message, créez une pulsation pour votre processus consommateur. Spécifiez le délai de visibilité initial (par exemple, deux minutes). Si le consommateur a besoin de plus de temps pour traiter le message, utilisez l'appel d'API ChangeMessageVisibility pour augmenter le délai de visibilité.
  • Augmentez la taille de lot lorsque vous effectuez des appels d'API ReceiveMessage. Définissez la valeur du paramètre ReceiveMessage sur une valeur supérieure à 1 et jusqu'à un maximum de 10.
  • Surveillez la métrique de file d'attente SQS Nombre approximatif de messages visibles. Cette métrique vous permet de voir si les producteurs commencent à produire des messages à un rythme supérieur à celui que les consommateurs ne peuvent en consommer. Pour effectuer une mise à l'échelle horizontale, augmentez le nombre de consommateurs ou de clients qui utilisent la file d'attente SQS, ou augmentez le nombre de threads qui interrogent la file d'attente.

Files d'attente SQS FIFO

Mémoire tampon de 120 000 messages

Les files d'attente FIFO autorisent un maximum de 120 000 messages en cours d'envoi. Les messages en cours d’envoi incluent ceux reçus d'une file d'attente par un consommateur, mais qui n'ont pas encore été supprimés de la file d'attente. Si vous atteignez le quota de 120 000, Amazon SQS ne renvoie aucun message d'erreur.

Une file d'attente FIFO examine les 120 000 premiers messages afin de déterminer les groupes de messages disponibles. Si vous avez un backlog de messages dans un seul groupe de messages, vous ne pouvez pas consommer les messages d’autres groupes de messages tant que vous n'avez pas réussi à consommer les messages du backlog.

Mise à l'échelle de groupes de messages

Les messages appartenant au même groupe de messages sont traités un par un, dans l'ordre relatif au groupe de messages. Lorsque vous recevez des messages avec plusieurs ID de groupe de messages, Amazon SQS essaie de renvoyer autant de messages que possible avec le même ID de groupe de messages. Cela permet aux autres consommateurs de traiter les messages avec un ID de groupe de messages différent.

Lorsque les messages appartenant à un ID de groupe de messages spécifique sont invisibles, aucun autre utilisateur ne peut traiter les messages portant le même ID de groupe de messages. Toutefois, les consommateurs peuvent traiter les messages provenant d'autres groupes de messages. Essayez d'augmenter le nombre de groupes de messages pour lesquels l'ordre n'est pas important.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 4 mois