Surveillance de l'utilisation et de la disponibilité de la mémoire pour l'exécution simultanée de fonctions

Découvrez comment surveiller l'utilisation et la disponibilité de la mémoire pour l'exécution simultanée de fonctions par le service des fonctions pour OCI.

Le service des fonctions pour OCI a une limite pour la quantité totale de mémoire disponible pour l'exécution simultanée de toutes les fonctions d'une région. La limite est nommée total-concurrency-mb et indique la quantité maximale de mémoire pouvant être allouée pour l'exécution simultanée de fonctions.

La limite de mémoire total-concurrency-mb a une valeur par défaut, comme indiqué dans Limites de fonction. La valeur par défaut a peut-être déjà été augmentée dans votre location, peut-être en réponse à des demandes de soutien qui ont été enregistrées à des occasions précédentes lorsque la capacité de mémoire a été dépassée.

Vous pouvez utiliser la console pour voir la valeur courante de la limite de mémoire totale-concurrency-mb dans une région (voir Consultation de la limite de mémoire courante pour l'exécution de fonctions concurrentes).

Lorsque la limite de mémoire total-concurrency-mb est atteinte, des erreurs HTTP-429 sont retournées en réponse aux appels de fonction. Lorsque vous constatez que le service des fonctions pour OCI a besoin de plus de mémoire pour l'exécution simultanée de fonctions, vous pouvez soumettre une demande d'augmentation de la limite de mémoire totale-concurrency-mb (voir Demande d'une augmentation de limite de service).

Au lieu d'attendre que la limite de mémoire totale-concurrency-mb soit atteinte, puis de répondre aux besoins, vous pouvez utiliser Oracle Cloud Infrastructure Monitoring et la mesure AllocatedTotalConcurrency pour surveiller la quantité de mémoire disponible pour l'exécution de fonctions concurrentes qui a été affectée. Notez que la valeur de la mesure AllocatedTotalConcurrency est la quantité de mémoire allouée. La quantité de mémoire actuellement utilisée pour l'exécution de fonctions concurrentes est toujours inférieure ou égale à la valeur de la mesure AllocatedTotalConcurrency. Pour plus d'informations, voir Consultation de la quantité de mémoire récemment affectée pour l'exécution de fonction concurrente.

Vous pouvez également utiliser la mesure AllocatedTotalConcurrency pour créer une alarme pour vous aviser si l'affectation de mémoire d'exécution de fonction concurrente dépasse un seuil que vous définissez. Pour plus d'informations, voir Création d'une alarme de seuil d'affectation de mémoire pour l'exécution d'une fonction concurrente.

Consultation de la limite de mémoire courante pour l'exécution d'une fonction concurrente

Pour voir la limite de mémoire courante pour l'exécution d'une fonction concurrente :

  1. Ouvrez le menu de navigation et sélectionnez Gouvernance et administration. Sous Gestion des locations, sélectionnez Limites, quotas et utilisation.

  2. Sélectionnez Fonctions dans la liste Service.
  3. Sélectionnez la région dans la liste Portée.

  4. Sélectionnez le compartiment racine dans la liste Compartiment.

    La limite total-concurrency-mb affiche la limite de mémoire courante pour l'exécution simultanée de fonctions.

  5. (Facultatif) Pour demander de la mémoire supplémentaire pour l'exécution de fonctions concurrentes, sélectionnez le menu Actions (trois points) à côté de la limite total-concurrency-mb, sélectionnez Open Support Request et suivez les instructions.

Affichage de la quantité de mémoire récemment affectée pour l'exécution de fonction concurrente

Pour voir la quantité de mémoire récemment allouée pour l'exécution d'une fonction concurrente :

  1. Ouvrez le menu de navigation et sélectionnez Observabilité et gestion. Sous Surveillance, sélectionnez Explorateur de mesures.

  2. Utilisez les champs Heure de début et Heure de fin pour spécifier une période représentative à analyser.
  3. Dans le panneau Interrogation 1, créez une interrogation comme suit :
    1. Pour Compartiment, sélectionnez le compartiment racine.
    2. Pour Espace de noms de mesure, sélectionnez oci_faas.
    3. Sélectionnez l'option Mode avancé et entrez l'une des interrogations suivantes dans l'éditeur de code d'interrogation :
      • Pour afficher la quantité totale de mémoire affectée à l'exécution simultanée de fonctions pour toutes les fonctions de la location à des intervalles de 1 minute, pendant la période que vous avez spécifiée, entrez l'interrogation suivante :
        AllocatedTotalConcurrency[1m].groupBy(resourceId).max().grouping().sum()
      • Pour afficher la quantité totale de mémoire allouée pour l'exécution simultanée de fonctions pour toutes les fonctions d'une application unique à des intervalles de 1 minute, entrez l'interrogation suivante pendant la période spécifiée :
        AllocatedTotalConcurrency[1m]{resourceId = "<application-OCID>"}.max()

        <application-OCID> est l'OCID d'une application. Par exemple :

        AllocatedTotalConcurrency[1m]{resourceId = "ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca"}.max()
  4. Sélectionnez Mettre à jour le graphique.

    Le graphique est mis à jour et affiche la quantité de mémoire allouée pour l'exécution simultanée de la fonction, pendant la période sélectionnée.

Création d'une alarme de seuil d'allocation de mémoire pour l'exécution d'une fonction concurrente

Pour créer une alarme qui se déclenche lorsque l'affectation de mémoire d'une exécution de fonction concurrente dépasse un seuil que vous définissez :

  1. Ouvrez le menu de navigation et sélectionnez Observabilité et gestion. Sous Surveillance, sélectionnez Définition d'alarmes.

  2. Sélectionnez Créer une alarme.
  3. Pour Nom de l'alarme, entrez un nom significatif pour l'alarme. Évitez d'entrer des informations confidentielles.
  4. Sélectionnez l'option Passer en mode avancé.
  5. Dans la zone Détails de la mesure, spécifiez la mesure à évaluer pour l'alarme, comme suit :
    1. Pour Compartiment, sélectionnez le compartiment racine.
    2. Pour Espace de noms de mesure, sélectionnez oci_faas.
  6. Dans la zone Règle de déclenchement, spécifiez la condition devant être satisfaite pour que l'alarme se déclenche :
    • Minutes de délai de déclenchement : Entrez le nombre de minutes pendant lequel la condition doit être maintenue pour que l'alarme se déclenche.
    • Gravité de l'alarme : Sélectionnez l'importance à accorder à un avis indiquant que l'alarme a été déclenchée.
    • Éditeur de code d'interrogation : Entrez une interrogation pour définir une condition qui, lorsqu'elle est satisfaite, déclenche l'alarme, comme suit :

      • Si vous voulez que l'alarme se déclenche lorsque l'affectation de mémoire pour l'exécution simultanée de fonctions pour toutes les fonctions de la location dépasse un certain nombre, entrez l'interrogation suivante :
        AllocatedTotalConcurrency[1m].groupBy(resourceId).max().grouping().sum() > <memory-threshold>

        <memory-threshold> est une quantité de mémoire (dans MiB) à utiliser comme seuil, au-dessus de laquelle vous voulez déclencher l'alarme.

        Par exemple, vous pouvez vouloir déclencher une alarme lorsque la quantité de mémoire allouée pour l'exécution d'une fonction concurrente dépasse 70 % de la mémoire totale disponible pour l'exécution d'une fonction concurrente. Si la mémoire totale pour l'exécution de la fonction concurrente est de 60 Go (soit 61 440 MiB), entrez l'interrogation suivante :

        AllocatedTotalConcurrency[1m].groupBy(resourceId).max().grouping().sum() > 43008
      • Si vous voulez que l'alarme se déclenche lorsque l'allocation de mémoire pour l'exécution simultanée de fonctions pour toutes les fonctions d'une seule application dépasse une certaine quantité, entrez l'interrogation suivante :
        AllocatedTotalConcurrency[1m]{resourceId = "<application-OCID>"}.max() > <memory-threshold>

        où :

        • <application-OCID> est l'OCID de l'application
        • <memory-threshold> est une quantité de mémoire (dans MiB) à utiliser comme seuil, au-dessus de laquelle vous voulez déclencher l'alarme.

        Par exemple, vous pouvez vouloir déclencher une alarme lorsque la quantité de mémoire allouée pour l'exécution simultanée de fonctions pour toutes les fonctions d'une même application dépasse 10 % de la mémoire totale disponible pour l'exécution simultanée de fonctions. Si la mémoire totale disponible pour l'exécution de la fonction concurrente est de 60 Go (soit 61 440 MiB), entrez l'interrogation suivante :

        AllocatedTotalConcurrency[1m]{resourceId = "ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca"}.max() > 6144
  7. Dans la zone Définir des avis d'alarme :
    1. Pour Destination, spécifiez l'endroit où les avis sont envoyés lorsque l'alarme se déclenche :
      • Service de destination : Sélectionnez Avis.
      • Compartiment : : Sélectionnez le compartiment contenant les ressources qui émettent les mesures évaluées par l'alarme. Le compartiment sélectionné est également l'emplacement de stockage de l'alarme.
      • Sujet : Sujet à utiliser pour les avis. Chaque sujet prend en charge un ou plusieurs protocoles d'abonnement, par exemple PagerDuty. Si un sujet approprié n'existe pas déjà, sélectionnez Créer un sujet et définissez un nouveau sujet. Pour plus d'informations, voir Création d'une alarme de base.
    2. Pour Regroupement de messages, sélectionnez l'une des options suivantes :
      • Regrouper les avis de tous les flux de mesure : Effectuer le suivi collectif du statut des mesures dans tous les flux de mesure. Envoyer un message lorsque le statut des mesures change dans tous les flux de mesures.
      • Fractionner les avis par flux de mesure : Effectuer le suivi individuel du statut des mesures par flux de mesure. Envoyer un message lorsque le statut des mesures change pour chaque flux de mesures. Pour un exemple, voir Scénario : Fractionner les messages par flux de mesures.
    3. Pour Format de message, sélectionnez l'une des options suivantes :
      • envoyer des messages formatés : Disposition conviviale et simplifiée. Pour consulter les protocoles d'abonnement et les types de message pris en charge pour les messages formatés (options autres que Brut), voir Formatage convivial.
      • Envoyer des messages JSON embellis (texte brut avec saut de ligne) : JSON avec nouvelles lignes et indentations.
      • Envoyer des messages bruts : Objet BLOB JSON brut.
    4. Pour supprimer les évaluations et les avis pour une durée spécifiée, sélectionnez Supprimer les avis. Cette option est utile pour éviter les avis d'alarme lors des périodes de maintenance du système. Indiquez une heure de début, une heure de fin et une description facultative. Voir Meilleures pratiques pour les alarmes et Suspension d'une seule alarme.
    5. Pour enregistrer l'alarme sans commencer à évaluer les données de mesure, décochez la case Activer cette alarme?.
  8. Sélectionnez Enregistrer l'alarme.