Comment puis-je empêcher un blocklog de messages croissant dans ma file d'attente Amazon SQS ?

Date de la dernière mise à jour : 26/08/2021

Le backlog de messages dans ma file d'attente Amazon Simple Queue Service (Amazon SQS) augmente. Pourquoi cela se produit-il et comment puis-je empêcher le backlog d'augmenter ?

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 qu'ils ne sont utilisés.
  • Les consommateurs ne suppriment pas les messages sous le délai de visibilité. Lorsque la file d'attente 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 (premier entré, premier sorti), une augmentation du backlog de messages peut également résulter de l'une des situations suivantes :

  • La limite de la mémoire tampon à hauteur de 20 000 messages de la file d'attente FIFO est atteinte.
  • Un message appartenant à un groupe de messages est bloqué par un consommateur, ce qui empêche le traitement d'autres messages du même groupe de messages.

Résolution

Suivez ces bonnes pratiques pour empêcher l'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 des messages après les avoir traités sous le délai de visibilité. Si vous ne savez pas combien de temps il faut pour traiter un message, créez une pulsation pour votre processus consommateur. Spécifiez le délai de visibilité initial (par exemple 2 minutes). Ensuite, si le consommateur a besoin de plus de temps pour traiter le message, continuez à augmenter le délai de visibilité à l'aide de l'appel d'API ChangeMessageVisibility.
  • Augmentez la taille du lot lorsque vous effectuez des appels d'API ReceiveMessage. Définissez la valeur du paramètre MaxNumberOfMessages sur un chiffre supérieur à 1 et au maximum égal à 10.
  • Surveillez la métrique « Approximate Number of Messages Visible » (Nombre approximatif de messages visibles) de la file d'attente SQS. Cette métrique vous permet de voir si les producteurs commencent à produire des messages à un taux supérieur à celui auquel les consommateurs peuvent consommer les messages. Pour mettre à l'échelle horizontalement, augmentez le nombre de consommateurs ou de clients qui consomment 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 20 000 messages

Les files d'attente FIFO autorisent un maximum de 20 000 messages en vol. Les messages en vol incluent ceux reçus d'une file d'attente par un consommateur, mais qui ne sont pas encore supprimés de cette file d'attente. Si vous atteignez le quota de 20 000, Amazon SQS ne renvoie pas de messages d'erreur. Une file d'attente FIFO parcourt les 20 000 premiers messages pour 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 de messages provenant d'autres groupes de messages tant que vous ne consommez pas les messages du backlog avec succès.

Mise à l'échelle des 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. Lors de la réception de messages comportant plusieurs ID de groupe de messages, Amazon SQS essaie d'abord de renvoyer autant de messages avec le même ID de groupe de messages que possible. Cela permet aux autres consommateurs de traiter des messages avec un ID de groupe de messages différent. Lorsque les messages appartenant à un ID de groupe de messages spécifique ne sont pas visibles, aucun autre consommateur ne peut traiter les messages portant le même ID de groupe de messages. Cependant, 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.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?