Simultanéité

Cloud Functions (2e génération) permet de gérer plusieurs requêtes simultanées sur une seule instance de fonction. Cela peut être utile pour éviter les démarrages à froid, car une instance déjà préchauffée peut traiter plusieurs requêtes simultanément, ce qui réduit la latence globale.

Lorsque la simultanéité est activée, Cloud Functions (2e génération) ne fournit pas d'isolation entre les requêtes simultanées traitées par la même instance de fonction. Dans de tels cas, vous devez vous assurer que le code de votre fonction peut s'exécuter en toute sécurité simultanément. Notez les points suivants concernant certains environnements d'exécution de langage :

  • Node.js est intrinsèquement monothread. Pour profiter de la simultanéité, utilisez le style de code asynchrone de JavaScript, qui est idiomatique dans Node.js. Pour en savoir plus, consultez la page Contrôle de flux asynchrone dans la documentation officielle de Node.js.

  • Nous vous recommandons de commencer par une simultanéité modérée, définie par exemple sur la valeur 8, puis de l'augmenter progressivement. Le fait de commencer avec une simultanéité trop élevée peut entraîner un comportement inattendu en raison des contraintes exercées sur les ressources (telles que la mémoire ou le processeur).

Par défaut, les instances de fonctions ne traitent qu'une seule requête à la fois. Vous pouvez modifier ce comportement par fonction en définissant une valeur de simultanéité, comme indiqué dans la section suivante.

Définir une valeur de simultanéité

La valeur de simultanéité par défaut est 1. Vous pouvez définir la valeur de simultanéité d'une fonction pour remplacer la valeur par défaut. La valeur de simultanéité représente le nombre maximal de requêtes simultanées qu'une seule instance de la fonction peut gérer.

Une valeur de simultanéité supérieure à 1 entraîne l'exécution simultanée du code de fonction sur une seule instance. La valeur de simultanéité maximale est de 1 000 (mais nous vous recommandons de commencer par une valeur inférieure et de remonter). Pour définir une valeur de simultanéité supérieure à 1, une fonction doit comporter un ou plusieurs processeurs virtuels. Consultez la page Limites de mémoire pour connaître les valeurs par défaut de la mémoire et du processeur virtuel.

Vous pouvez définir la simultanéité pour une fonction de l'une des manières suivantes :

Définir la simultanéité à l'aide de Cloud Functions

gcloud

Vous pouvez définir une valeur de simultanéité à l'aide de gcloud CLI en déployant une fonction de 2e génération avec l'option --concurrency :

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

CONCURRENCY_VALUE correspond au nombre maximal de requêtes simultanées autorisées par instance de conteneur. Laissez la valeur de simultanéité non spécifiée pour recevoir la valeur par défaut du serveur.

Console

Pour définir une valeur de simultanéité à l'aide de la console Google Cloud, procédez comme suit :

  1. Accédez à la page de présentation de Cloud Functions dans la console Google Cloud.
  2. Cliquez sur le nom de votre fonction pour accéder à la page Informations sur la fonction.
  3. Cliquez sur Modifier.
  4. Développez la section Environnement d'exécution, compilation… à la fin de la page, puis cliquez sur l'onglet Environnement d'exécution.
  5. Sous Simultanéité, saisissez une valeur de simultanéité dans le champ Nombre maximal de requêtes simultanées par instance.
  6. Cliquez sur Suivant.
  7. Cliquez sur Déployer.

    Cette étape est nécessaire pour que vos modifications soient prises en compte.

Définir la simultanéité à l'aide de Cloud Run

gcloud

Pour définir une valeur de simultanéité à l'aide de gcloud CLI, mettez à jour le service Cloud Run sous-jacent et spécifiez l'option --concurrency :

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

CONCURRENCY_VALUE correspond au nombre maximal de requêtes simultanées autorisées par instance de conteneur. Laissez la valeur de simultanéité non spécifiée pour recevoir la valeur par défaut du serveur.

Console

Pour définir une valeur de simultanéité à l'aide de la console Google Cloud, procédez comme suit :

  1. Accédez à la page de présentation de Cloud Functions dans la console Google Cloud.
  2. Cliquez sur le nom de votre fonction pour accéder à la page Informations sur la fonction.
  3. Dans le volet Fourni par Cloud Run, cliquez sur le nom de votre fonction pour accéder à la page Informations sur le service du service Cloud Run sous-jacent.
  4. Cliquez sur Modifier et déployer la nouvelle révision en haut de la page.
  5. Ouvrez l'onglet Conteneur.
  6. Saisissez une valeur de simultanéité dans le champ Nombre maximal de requêtes simultanées par instance.

    Si la valeur que vous avez fournie pour le nombre maximal de requêtes simultanées par instance est supérieure à 1, faites défiler la page vers le bas et ouvrez la section Conteneurs. Assurez-vous que le champ processeur contient une valeur égale ou supérieure à 1.

  7. Cliquez sur Déployer.

    Cette étape est nécessaire pour que vos modifications soient prises en compte.

Cloud Functions (2e génération) s'appuie sur la compatibilité simultanée fournie par Cloud Run. Pour en savoir plus, consultez la page Nombre maximal de requêtes simultanées par instance (services) dans la documentation Cloud Run.