Pourquoi ma fonction Lambda avec une source d'événement Amazon SQS ne se met-elle pas à l'échelle de façon optimale ?

Date de la dernière mise à jour : 30/01/2020

Ma fonction AWS Lambda avec un déclencheur Amazon Simple Queue Service (Amazon SQS) ne se met pas à l'échelle comme prévu. Comment puis-je être sûr que ma fonction s'adapte à une simultanéité optimale ?

Brève description

Lorsque vous configurez une file d'attente SQS en tant que source d'événement et que les messages sont disponibles pour traitement, Lambda commence par une simultanéité maximale de cinq. De manière optimale, les fonctions Lambda avec un déclencheur Amazon SQS peuvent mettre à l'échelle 60 instances supplémentaires par minute pour atteindre un maximum de 1 000 appels simultanés. Pour que votre fonction soit mise à l'échelle de façon optimale, les conditions suivantes doivent être remplies :

  • La fonction ne génère aucune erreur.
  • La simultanéité non réservée est suffisante dans la région AWS, ou la simultanéité réservée pour la fonction est d'au moins 1 000.
  • Il y a des messages dans la file d'attente SQS.

Solution

Corriger les erreurs

En cas d'erreur lorsque Lambda tente d'appeler votre fonction, le service empêche votre fonction de se mettre à l'échelle pour éviter les erreurs à grande échelle. Dès que les erreurs s'arrêtent, Lambda continue à augmenter la capacité de votre fonction. Il augmente 60 appels simultanés supplémentaires par minute tant que votre compte n'est pas proche ou n'a pas atteint le quota de service pour la mise à l'échelle ou la simultanéité de transmission en rafales dans la région. Votre fonction peut augmenter jusqu'à un maximum de 1 000 appels simultanés.

Pour obtenir de l'aide sur les erreurs, consultez Dépannage des problèmes dans AWS Lambda et Comment résoudre les problèmes de fonction Lambda ?

Gérer la simultanéité

Si vous n'avez pas configuré la simultanéité réservée sur votre fonction, elle partage le quota de simultanéité non réservée par défaut de 1 000 avec d'autres fonctions du même compte et de la même région. S'il y a au moins 1 000 simultanéités non réservées dans la région, votre fonction continue de se mettre à l'échelle jusqu'à ce qu'elle atteigne la simultanéité maximale. Sinon, les appels sont limités lorsque toutes vos simultanéités non réservées sont en cours d'utilisation.

Si vous avez configuré la simultanéité réservée sur votre fonction, assurez-vous qu'il existe au moins 1 000 simultanéités réservées. S'il y en a moins, votre fonction est limitée lorsqu'elle atteint la valeur réservée. Pour plus d'informations, consultez Gestion de la simultanéité pour une fonction Lambda.

Remarque : si vous déterminez que vous avez besoin d'une plus grande simultanéité pour une région, vous pouvez demander une augmentation du quota de service dans la console Service Quotas.

Vérifier la profondeur de la file d'attente

Lambda met uniquement à l'échelle les appels s'il y a des messages dans la file d'attente SQS. Si vous ne voyez aucune limitation dans les métriques de votre fonction et qu'il n'y a aucune erreur, vérifiez la métrique de file d'attente SQS ApproximateNumberOfMessagesNotVisible. Cette métrique indique le nombre de messages qui doivent encore être traités.

Si la métrique est faible (ou à 0), votre fonction ne peut pas être mise à l'échelle. Si la métrique est élevée et croissante, et qu'il n'y a pas d'erreurs, vérifiez la configuration de la taille du lot de votre déclencheur. Il y a un léger délai entre la réception d'un message de la file d'attente et l'appel de votre fonction. Si la taille de votre lot est définie comme faible (à 1, par exemple), le faible délai peut s'accumuler sur tous les appels et entraîner une sauvegarde des messages dans votre file d'attente. Essayez d'augmenter la taille de lot jusqu'à ce que la durée augmente plus rapidement que la taille de lot, jusqu'à la taille de lot maximale de 10.

Remarque : si vous définissez une taille de lot de 10, mais que votre file d'attente SQS contient moins de 1 000 messages, vous êtes moins susceptible de recevoir un lot complet de 10 messages dans vos appels. Pour plus d'informations, consultez ReceiveMessage dans la Référence d'API Amazon SQS.


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

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?