Réduction de la latence initiale à l'aide de l'accès simultané provisionné

Découvrez comment utiliser la simultanéité provisionnée pour minimiser les retards initiaux lors de l'appel de fonctions dans OCI Functions.

Lorsqu'une fonction est appelée pour la première fois (appelée "démarrage à froid"), OCI Functions provisionne l'appel de fonction avec l'infrastructure d'exécution requise. L'infrastructure d'exécution inclut les ressources réseau et de calcul nécessaires pour appeler la fonction. Le provisionnement initial, et donc la réponse au premier appel, peut prendre un certain temps variable (peut-être plusieurs secondes ou plus). L'infrastructure d'exécution de l'appel de fonction initial est conservée pendant une période (appelée "temps d'inactivité") pour être utilisée par les appels ultérieurs de la même fonction. Lorsqu'un appel de fonction ultérieur est capable d'utiliser une infrastructure existante (appelée "démarrage à chaud"), il y a généralement un temps de réponse inférieur à la seconde à l'appel de fonction.

Il est courant de vouloir des réponses cohérentes, en moins d'une seconde, aux appels de fonction. Afin de réduire la latence associée au provisionnement initial et de garantir les démarrages à chaud, vous pouvez activer l'accès simultané provisionné pour une fonction. La simultanéité provisionnée est la capacité d'OCI Functions à toujours disposer de l'infrastructure d'exécution pour au moins un certain nombre minimal d'appels de fonction simultanés. L'accès simultané provisionné est mesuré en unités d'accès simultané provisionné. Le nombre total d'UC disponibles dépend de la taille de la fonction, de la limite de location et de l'activation ou non de la simultanéité d'accès aux données provisionnée pour d'autres fonctions de la location.

Pour utiliser la simultanéité provisionnée, vous devez indiquer le nombre d'UC requises pour la fonction. En règle générale, vous devez spécifier un nombre d'UCP similaire au nombre d'appels de fonction simultanés que vous attendez. La mémoire disponible que vous spécifiez pour une fonction détermine à la fois le plus petit nombre de PCU que vous pouvez spécifier pour cette fonction et les incréments par lesquels vous pouvez augmenter le nombre de PCU, comme suit :

mémoire, Nombre minimal d'UCK : Augmentez les PCU par incréments de : Exemple
128 MO 40 40 80
256 MO 20 20 60
512 MO 10 10 50
1024 MO 10 10 40
2048 MO 10 10 30
3072 Mo 10 10 30

Comme vous pouvez le voir, la valeur PCU doit toujours être un multiple de 10. Si la mémoire disponible est de 256 Mo, la valeur PCU doit être un multiple de 20. Si la mémoire disponible est de 128 Mo, la valeur PCU doit être un multiple de 40.

Vous pouvez spécifier des PCU pour une fonction de différentes manières :

  • Utilisation de la console lors de la création d'une fonction basée sur une image Docker existante qui a déjà été propagée vers le registre Docker (reportez-vous à Création de fonctions à partir d'images Docker existantes).
  • A l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure pour créer ou mettre à jour une fonction, et en indiquant l'option facultative --provisioned-concurrency, au format suivant :
    --provisioned-concurrency "{\"strategy\": \"<CONSTANT|NONE>\", \"count\": <value>}"

    où :

    • \"strategy\": \"<CONSTANT|NONE>\" indique si la simultanéité provisionnée doit être utilisée (auquel cas, indiquez CONSTANT) ou non (auquel cas, indiquez NONE)
    • \"count\": <value> indique le nombre minimal d'appels de fonction simultanés, lorsque \"strategy\": \"CONSTANT\"

    Par exemple :

    oci fn function create --application-id ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca --display-name helloworld-func --image phx.ocir.io/ansh81vru1zp/helloworld/helloworld-func:0.0.1 --memory-in-mbs 128 --provisioned-concurrency "{\"strategy\": \"CONSTANT\", \"count\": 40}"
    oci fn function update --function-id ocid1.fnfunc.oc1.phx.aaaa____uxoa --provisioned-concurrency "{\"strategy\": \"CONSTANT\", \"count\": 40}"

    Les paramètres --provisioned-concurrency doivent être au format JSON valide, ce qui dépend de la plate-forme que vous utilisez (reportez-vous à Gestion des entrées et des sorties de l'interface de ligne de commande). Vous pouvez fournir les paramètres sous la forme d'une chaîne sur la ligne de commande, d'un fichier ou d'une chaîne de ligne de commande et d'un fichier.

  • A l'aide de l'API (reportez-vous à CreateFunction et à UpdateFunction).