Pourquoi la mise à l’échelle de ma fonction Lambda associée à une source d’événements Amazon SQS ne s’effectue-t-elle pas de manière optimale ?

Lecture de 5 minute(s)
0

La fonction AWS Lambda pour ma source d'événements de file d'attente Amazon Simple Queue Service (Amazon SQS) ne se met pas à l’échelle comme prévu. Je souhaite configurer une simultanéité optimale.

Résolution

Remarque : Lorsque vous configurez une file d’attente Amazon SQS comme source de l’événement, les fonctions Lambda peuvent effectuer idéalement une mise à l’échelle ascendante jusqu’à 300 instances supplémentaires par minute. Le nombre maximum d'exécutions simultanées pour les files d'attente standard est de 1 250. Si vous utilisez le mappage des sources d’événements FIFO, les fonctions peuvent mettre à l’échelle descendante la simultanéité au nombre de groupes de messages actifs.

Identifier et résoudre les problèmes d'invocation des fonctions Lambda

Pour éviter les erreurs de mise à l’échelle, Lambda limite la mise à l’échelle des fonctions en cas d’erreur d’invocation. Une fois les problèmes résolus, Lambda continue de mettre à l’échelle la fonction. Pour plus d’informations, consultez la section Stratégie de backoff en cas d’échec des invocations. Pour résoudre les erreurs d'invocation des fonctions Lambda, consultez les sections Gestion des erreurs relatives à une source d'événements SQS dans Lambda et Comment puis-je résoudre les échecs de fonctions Lambda ?

Configurer une fonction Lambda avec une simultanéité optimale

Simultanéité réservée

Si vous avez configuré la simultanéité réservée pour une fonction, Lambda limite cette fonction lorsqu’elle atteint la valeur réservée. Les mappages de sources d'événements n'incluent pas la simultanéité réservée et peuvent traiter plus de messages provenant de votre file d'attente que d'en envoyer à votre fonction.

La simultanéité réservée minimale pour votre fonction doit être de 1 250 pour les files SQS standard et égale au total des groupes de messages actifs pour les files FIFO. Il est recommandé de définir un niveau de simultanéité réservée supérieur au nombre de groupes de messages dans la file d’attente FIFO. En effet, une valeur de simultanéité réservée inférieure peut entraîner des retards de traitement dans la file d’attente FIFO et limiter la fonction.

Important : Pour limiter le nombre d’invocations simultanées, utilisez le paramètre de simultanéité maximale pour les sources d’événements Amazon SQS au lieu de la simultanéité réservée.

Simultanéité par défaut

Votre compte AWS dispose d'un quota de simultanéité par défaut de 1 000 pour toutes les fonctions du même compte et de la même région AWS. Les fonctions sont mises à l’échelle jusqu'à atteindre la simultanéité maximale disponible. Lorsque toutes vos fonctions utilisent le groupe de 1 000 applications simultanées, Lambda limite les invocations.

Lambda limite la vitesse à laquelle vos fonctions peuvent être mises à l’échelle afin que les pics de trafic soudains n'entraînent pas une mise à l'échelle excessive des fonctions. La mise à l’échelle des fonctions Lambda s’effectue initialement selon le taux de mise à l’échelle de la simultanéité. Étant donné que le taux de mise à l'échelle de la simultanéité se situe au niveau de la fonction, chaque fonction de votre compte peut être mise à l’échelle indépendamment des autres fonctions. Le taux de mise à l’échelle de la simultanéité diffère également du quota de simultanéité défini au niveau du compte, qui spécifie la quantité totale d’unités de simultanéité disponibles pour l’exécution des fonctions.

Remarque : La simultanéité par défaut est différente de la simultanéité provisionnée. Pour plus d'informations, consultez la section Comprendre la simultanéité réservée et la simultanéité provisionnée.

Paramètre de simultanéité maximale

Lorsque vous définissez la simultanéité maximale d’une source d’événements, cette valeur ne s’applique qu’à cette source d’événements spécifique. Les sources d’événements supplémentaires pour lesquelles aucune limite maximale de simultanéité n’est définie utilisent le quota de simultanéité restant du compte ou la simultanéité réservée.

Le paramètre de simultanéité maximale et le paramètre de simultanéité réservée peuvent être utilisés conjointement. Il est recommandé de définir la simultanéité maximale à une valeur inférieure à la concurrence réservée de la fonction afin que les fonctions ne soient pas ralenties.

Vérifiez que la file d’attente Amazon SQS contient suffisamment de messages pour permettre la mise à l’échelle de la fonction Lambda

Si une file d’attente Amazon SQS est configurée pour invoquer une fonction Lambda, Lambda n’augmente le nombre d’invocations que s’il y a des messages dans la file d’attente.

Pour utiliser Amazon CloudWatch afin de vérifier combien de messages de votre file d'attente doivent être traités, consultez la métrique ApproximateNumberOfMessagesVisible de la file d'attente.

Si la métrique est faible ou égale à 0, la mise à l’échelle de la fonction ne peut s’effectuer.

Si la métrique est élevée et qu'il n'y a aucun problème d'invocation, augmentez la taille du lot sur votre notification d'événement jusqu'à ce que la métrique Durée n'augmente pas. Pour plus d'informations sur les métriques pour Lambda, consultez la section Types de métriques.

Remarque : La taille de lot maximale d’une file d’attente Amazon SQS standard est de 10 000 enregistrements. Pour les files d’attente FIFO, la taille de lot maximale est de 10 enregistrements.

Vérifiez qu'Amazon SQS ajoute les messages à une file d'attente

Pour vérifier qu'Amazon SQS ajoute les nouveaux messages à une file d'attente, consultez la métrique NumberOfMessagesSent de la file d'attente.

Confirmez que le consommateur effectue l'appel à l'API ReceiveMessage

Pour vérifier que le consommateur effectue l'appel d'API ReceiveMessage, consultez la métrique NumberOfMessagesReceived de la file d'attente.

Remarque : Les pics de la métrique NumberOfEmptyReceives indiquent que le consommateur effectue l'appel à l'API ReceiveMessage, mais que l'appel ne renvoie aucun message de la file d'attente. Ce problème se produit lorsqu'aucun message n'est dans la file d'attente.

Informations connexes

Utilisation de Lambda avec Amazon SQS

Gestion de la simultanéité des fonctions AWS Lambda

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