Simultanéité
Les fonctions Cloud Run permettent 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, les fonctions Cloud Run ne fournissent 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).
Pour Python 3.8 et versions ultérieures, la prise en charge d'une forte simultanéité par instance de fonction nécessite suffisamment de threads pour gérer la simultanéité. Nous vous recommandons de définir une variable d'environnement d'exécution afin que la valeur des threads soit égale à la valeur de simultanéité, par exemple :
THREADS=8
.
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 :
- Fonctions Cloud Run : gcloud CLI ou console Google Cloud.
- Cloud Run : gcloud CLI ou console Google Cloud.
Définir la simultanéité à l'aide de fonctions Cloud Run
gcloud
Vous pouvez définir une valeur de simultanéité à l'aide de gcloud CLI en déployant une fonction avec l'option --concurrency
:
gcloud functions deploy YOUR_FUNCTION_NAME \ --gen2 \ --concurrency=CONCURRENCY_VALUE \ FLAGS...
Où CONCURRENCY_VALUE est le 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 :
- Accédez à la page de présentation des fonctions Cloud Run dans la console Google Cloud.
- Cliquez sur le nom de votre fonction pour accéder à la page Informations sur la fonction.
- Cliquez sur Modifier.
- Développez la section Environnement d'exécution, compilation… à la fin de la page, puis cliquez sur l'onglet Environnement d'exécution.
- Sous Simultanéité, saisissez une valeur de simultanéité dans le champ Nombre maximal de requêtes simultanées par instance.
- Cliquez sur Suivant.
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
Où CONCURRENCY_VALUE est le 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 :
- Accédez à la page de présentation des fonctions Cloud Run dans la console Google Cloud.
- Cliquez sur le nom de votre fonction pour accéder à la page Informations sur la fonction.
- 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.
- Cliquez sur Modifier et déployer la nouvelle révision en haut de la page.
- Ouvrez l'onglet Conteneur.
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.
Cliquez sur Déployer.
Cette étape est nécessaire pour que vos modifications soient prises en compte.
Les fonctions Cloud Run s'appuient 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.