Surveillance de la simultanéité - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Surveillance de la simultanéité

Lambda émet des métriques CloudWatch Amazon pour vous aider à surveiller la simultanéité de vos fonctions. Cette rubrique explique ces métriques et comment les interpréter.

Métriques de simultanéité générales

Utilisez les métriques suivantes pour surveiller la simultanéité de vos fonctions Lambda. La granularité de chaque métrique est d'une minute.

  • ConcurrentExecutions : le nombre d'invocations simultanées actives à un moment donné. Lambda émet cette métrique pour toutes les fonctions, versions et alias. Pour toute fonction de la console Lambda, Lambda affiche le graphique pour ConcurrentExecutions nativement native dans l'onglet Surveillance, sous Métriques. Affichez cette métrique à l'aide de MAX.

  • UnreservedConcurrentExecutions : le nombre d'invocations simultanées actives qui utilisent la simultanéité non réservée. Lambda émet cette métrique pour toutes les fonctions d'une région. Affichez cette métrique à l'aide de MAX.

  • ClaimedAccountConcurrency – Le niveau de simultanéité qui n'est pas disponible pour les appels à la demande. ClaimedAccountConcurrency est égal à UnreservedConcurrentExecutions plus le montant de la simultanéité allouée (c'est-à-dire le total de la simultanéité réservée plus le total de la simultanéité provisionnée). Si ClaimedAccountConcurrency dépasse la limite de simultanéité de votre compte, vous pouvez demander une limite de simultanéité de compte plus élevée. Affichez cette métrique à l'aide de MAX. Pour de plus amples informations, veuillez consulter Travailler avec la métrique ClaimedAccountConcurrency.

Métriques de simultanéité provisionnée

Utilisez les métriques suivantes pour surveiller les fonctions Lambda utilisant la simultanéité provisionnée. La granularité de chaque métrique est d'une minute.

  • ProvisionedConcurrentExecutions : le nombre d'instances d'environnement d'exécution qui traitent activement une invocation sur une simultanéité allouée. Lambda émet cette métrique pour chaque version de fonction et alias avec simultanéité provisionnée configurée. Affichez cette métrique à l'aide de MAX.

ProvisionedConcurrentExecutions n'est pas le même que le nombre total de simultanéités provisionnées que vous allouez. Par exemple, supposons que vous allouiez 100 unités de simultanéité provisionnée à une version de fonction. Au cours d'une minute donnée, si au plus 50 de ces 100 environnements d'exécution géraient les invocations simultanément, la valeur de MAX(ProvisionedConcurrentExecutions) est 50.

  • ProvisionedConcurrencyInvocations – Le nombre de fois où Lambda invoque votre code de fonction en utilisant la simultanéité provisionnée. Lambda émet cette métrique pour chaque version de fonction et alias avec simultanéité provisionnée configurée. Affichez cette métrique à l'aide de SUM.

ProvisionedConcurrencyInvocations diffère de ProvisionedConcurrentExecutions, car ProvisionedConcurrencyInvocations compte le nombre total d'invocations, tandis que ProvisionedConcurrentExecutions compte le nombre d'environnements actifs. Pour comprendre cette distinction, examinons le scénario suivant :

Comparaison de ProvisionedConcurrencyInvocations et ProvisionedConcurrentExecutions.

Dans cet exemple, supposons que vous receviez une invocation par minute et que chaque invocation dure deux minutes. Chaque barre horizontale orange représente une demande unique. Supposons que vous allouiez dix unités de simultanéité provisionnée à cette fonction, de sorte que chaque demande s'exécute sur la simultanéité provisionnée.

Entre les minutes 0 et 1, Request 1 entre en jeu. À la minute 1, la valeur de MAX(ProvisionedConcurrentExecutions) est 1, car au plus un environnement d'exécution était actif au cours de la dernière minute. La valeur de SUM(ProvisionedConcurrencyInvocations) est également 1, puisqu'une nouvelle demande est arrivée au cours de la dernière minute.

Entre les minutes 1 et 2, Request 2 entre en jeu et Request 1 continue de fonctionner. À la minute 2, la valeur de MAX(ProvisionedConcurrentExecutions) est 2, car au plus 2 environnements d'exécution étaient actifs au cours de la dernière minute. Cependant, la valeur de SUM(ProvisionedConcurrencyInvocations) est 1, car une seule nouvelle demande est arrivée au cours de la dernière minute. Ce comportement métrique se poursuit jusqu'à la fin de l'exemple.

  • ProvisionedConcurrencySpilloverInvocations : le nombre de fois où Lambda invoque votre fonction sur la simultanéité standard (réservée ou non) lorsque toute la simultanéité provisionnée est utilisée. Lambda émet cette métrique pour chaque version de fonction et alias avec simultanéité provisionnée configurée. Affichez cette métrique à l'aide de SUM. La valeur de ProvisionedConcurrencyInvocations + ProvisionedConcurrencySpilloverInvocations doit être égale au nombre total d'invocations de fonctions (c'est-à-dire à la métrique Invocations).

    ProvisionedConcurrencyUtilization : le pourcentage de la simultanéité provisionnée utilisée (c'est à dire la valeur de ProvisionedConcurrentExecutions divisée par la quantité totale de la simultanéité provisionnée allouée). Lambda émet cette métrique pour chaque version de fonction et alias avec simultanéité provisionnée configurée. Affichez cette métrique à l'aide de MAX.

Par exemple, supposons que vous provisionniez 100 unités de simultanéité provisionnée à une version de fonction. Au cours d'une minute donnée, si au plus 60 de ces 100 environnements d'exécution géraient des invocations simultanément, la valeur de MAX(ProvisionedConcurrentExecutions) est 60 et la valeur de MAX(ProvisionedConcurrencyUtilization) est 0,6.

Une valeur élevée pour ProvisionedConcurrencySpilloverInvocations peut indiquer que vous devez allouer un accès simultané supplémentaire à votre fonction. Vous pouvez également configurer Application Auto Scaling pour gérer la mise à l'échelle automatique de la simultanéité provisionnée en fonction de seuils prédéfinis.

À l'inverse, des valeurs constamment faibles pour ProvisionedConcurrencyUtilization peuvent indiquer que vous avez trop alloué de simultanéité provisionnée pour votre fonction.

Travailler avec la métrique ClaimedAccountConcurrency

Lambda utilise la métrique ClaimedAccountConcurrency pour déterminer le niveau de simultanéité disponible sur votre compte pour les appels à la demande. Lambda calcule ClaimedAccountConcurrency à l'aide de la formule suivante :

ClaimedAccountConcurrency = UnreservedConcurrentExecutions + (allocated concurrency)

UnreservedConcurrentExecutions correspond au nombre d'invocations simultanées actives qui utilisent la simultanéité non réservée. La simultanéité allouée est la somme des deux parties suivantes (en les remplaçant RC en tant que « simultanéité réservée » et PC en tant que « simultanéité provisionnée ») :

  • Total pour RC entre toutes les fonctions d'une région.

  • Total de PC entre toutes les fonctions d'une région qui utilisent PC, à l'exception des fonctions qui utilisent RC.

Note

Vous ne pouvez pas allouer plus de PC que ce RC pour une fonction. Ainsi, le RC d’une fonction est toujours supérieur ou égal à son PC. Pour calculer la contribution à la simultanéité allouée pour de telles fonctions avec PC et RC, Lambda ne prend en compte que RC, qui est le maximum des deux.

Lambda utilise la métrique ClaimedAccountConcurrency plutôt que ConcurrentExecutions pour déterminer le niveau de simultanéité disponible pour les appels à la demande. Bien que la métrique ConcurrentExecutions soit utile pour suivre le nombre d'appels simultanés actifs, elle ne reflète pas toujours votre véritable disponibilité simultanée. En effet, Lambda prend également en compte la simultanéité réservée et la simultanéité provisionnée pour déterminer la disponibilité.

Pour illustrer ClaimedAccountConcurrency, imaginez un scénario dans lequel vous configurez une grande partie de la simultanéité réservée et de la simultanéité provisionnée entre vos fonctions qui restent largement inutilisées. Dans l'exemple suivant, supposons que la limite de simultanéité de votre compte est de 1 000 et que votre compte comporte deux fonctions principales : function-orange et function-blue. Vous allouez 600 unités de simultanéité réservée pour function-orange. Vous allouez 200 unités de simultanéité provisionnée pour function-blue. Supposons qu'au fil du temps, vous déployiez des fonctions supplémentaires et observiez le schéma de trafic suivant :

Un graphique montrant comment Lambda détermine. ClaimedAccountConcurrency

Dans le schéma précédent, les lignes noires indiquent l'utilisation simultanée réelle au fil du temps, et la ligne rouge indique la valeur de ClaimedAccountConcurrency au fil du temps. Dans ce scénario, ClaimedAccountConcurrency est égal à 800 au minimum malgré une faible utilisation réelle de la simultanéité entre vos fonctions. Cela est dû au fait que vous avez alloué 800 unités de simultanéité au total pour function-orange et function-blue. Du point de vue de Lambda, vous avez « revendiqué » cette simultanéité pour l'utiliser, il ne vous reste donc que 200 unités de simultanéité pour les autres fonctions.

Pour ce scénario, la simultanéité allouée est de 800 dans la formule ClaimedAccountConcurrency. Nous pouvons ensuite déduire la valeur de ClaimedAccountConcurrency en différents points du diagramme :

  • Au niveau de t1, ClaimedAccountConcurrency est égal à 800 (800 + 0 UnreservedConcurrentExecutions).

  • Au niveau de t2, ClaimedAccountConcurrency est égal à 900 (800 + 100 UnreservedConcurrentExecutions).

  • Au niveau de t3, ClaimedAccountConcurrency est à nouveau égal à 900 (800 + 100 UnreservedConcurrentExecutions).

Configuration de la ClaimedAccountConcurrency métrique dans CloudWatch

Lambda émet la métrique en entrée. ClaimedAccountConcurrency CloudWatch Utilisez cette métrique avec la valeur de SERVICE_QUOTA(ConcurrentExecutions) pour obtenir le pourcentage d'utilisation de la simultanéité sur votre compte, comme indiqué dans la formule suivante :

Utilization = (ClaimedAccountConcurrency/SERVICE_QUOTA(ConcurrentExecutions)) * 100%

La capture d'écran suivante montre comment vous pouvez représenter graphiquement cette formule CloudWatch. La ligne verte claim_utilization représente l'utilisation simultanée de ce compte, qui est d'environ 40 % :

Capture d'écran montrant comment utiliser la ClaimedAccountConcurrency métrique dans CloudWatch.

La capture d'écran précédente inclut également une CloudWatch alarme qui s'ALARMactive lorsque l'utilisation simultanée dépasse 70 %. Vous pouvez utiliser la métrique ClaimedAccountConcurrency ainsi que des alarmes similaires pour déterminer de manière proactive le moment où vous pourriez avoir besoin de demander une limite de simultanéité de comptes plus élevée.