À propos du nombre maximal d'instances

Par défaut, les services Cloud Run ont un nombre maximal d'instances déterminé par la limite de quota la plus basse parmi les limites pertinentes suivantes. La limite maximale pour chaque région dépend également de la configuration du processeur et de la mémoire de votre service Cloud Run. Plus précisément, le nombre maximal d'instances disponibles pour votre service correspond au minimum de chacun des éléments suivants :

  • Quota de processeur régional divisé par la configuration du processeur pour le service.
  • Quota de mémoire régional divisé par la configuration de mémoire du service.
  • Quota de GPU régional, avec ou sans redondance zonale, divisé par la configuration de GPU pour le service.

Par exemple, un quota de référence de 1 000 vCPU ou 2 000 Gio de mémoire permettrait à un déploiement utilisant 2 Gio de mémoire ou 1 CPU de spécifier un maximum de 1 000 instances pour un seul service.

Ces quotas sont également comptabilisés comme la somme de toutes les ressources utilisées dans la région pour vos ressources Cloud Run. Si votre utilisation totale atteint l'une de ces limites, vous risquez de rencontrer des échecs de scaling ou de démarrage de nouvelles exécutions de jobs.

Vous pouvez consulter le quota de base par région pour le total de processeurs, de mémoire et de GPU dans la page Quotas de la console.

Augmenter le quota régional de référence

Si vous avez besoin d'un nombre total plus élevé de processeurs, de mémoire ou de GPU pour la région dans laquelle votre service Cloud Run est déployé, vous pouvez demander une augmentation de quota.

Bonnes pratiques pour définir le nombre maximal d'instances

La section suivante décrit les bonnes pratiques pour configurer les limites maximales d'instances pour vos services.

Valeur d'instance maximale optimale pour les services basés sur des événements

Les services basés sur des événements, tels que les fonctions, peuvent connaître des pics de trafic sporadiques en fonction des événements entrants. Pour déterminer une valeur maximale optimale pour ces services, vous devez tenir compte de facteurs tels que le temps d'appel de service, la fréquence d'appel moyenne attendue, la fréquence d'appel maximale et la tolérance aux pannes pour les échecs d'appel.

En règle générale, commencez avec une valeur d'instances maximale de 3, puis surveillez les échecs d'appel et ajustez la valeur d'instances maximale si nécessaire.

Gérer les requêtes lorsque toutes les instances sont occupées

En temps normal, votre service évolue en créant des instances permettant de gérer la charge de trafic entrant. Néanmoins, si vous avez défini une limite maximale d'instances, il est possible que le nombre d'instances soit insuffisant pour répondre à cette charge de trafic entrant.

Dans ce scénario, Cloud Run tente de diffuser une nouvelle requête entrante pendant 30 secondes maximum :

  • Si une instance termine le traitement de sa requête pendant cette période, elle peut commencer à traiter la nouvelle requête entrante.
  • Si aucune instance n'est disponible, la requête échoue.

Cloud Run enregistre automatiquement les événements destinés aux services basés sur des événements jusqu'à ce que la capacité soit disponible.

Limites maximales d'instances dépassant la capacité de scaling de Cloud Run

Lorsque vous spécifiez une limite maximale d'instances, vous définissez une limite supérieure. Si vous définissez une limite élevée, cela ne veut pas dire que votre service évoluera de façon à atteindre le nombre d'instances spécifié. Cela signifie simplement que le nombre d'instances qui coexistent à un moment donné ne doit pas dépasser la limite.

En outre, la définition d'une limite maximale d'instances peut affecter les stratégies de scaling utilisées par Cloud Run pour répondre à votre demande de trafic. En règle générale, Cloud Run accorde la priorité à la limite spécifiée plutôt que d'effectuer un scaling à la hausse qui pourrait la dépasser.

Gérer les pics de trafic

Dans certains cas (comme lors d'une augmentation soudaine du trafic), Cloud Run peut créer, pendant une courte période, un nombre d'instances supérieur à la limite maximale spécifiée. Si votre service ne peut pas tolérer ce comportement temporaire, vous pouvez appliquer une marge de sécurité et définir un nombre maximal d'instances inférieur à celui que votre service peut accepter.

Déploiements

Lorsque vous déployez une nouvelle révision, Cloud Run migre progressivement le trafic de l'ancienne révision vers la nouvelle. Comme le nombre maximal d'instances est défini pour chaque révision de manière indépendante, vous pouvez dépasser temporairement la limite spécifiée pendant la période qui suit le déploiement.

Par exemple, un service peut avoir un nombre maximal d'instances défini sur 5. En temps normal, le service évolue jusqu'à 5 instances pour gérer les requêtes. Lorsque vous déployez une nouvelle révision, elle dispose de sa propre limite maximale d'instances de 5.

Les requêtes qui sont déjà traitées par la révision précédente ne sont pas interrompues lorsque vous déployez une nouvelle révision. Ces requêtes poursuivent leur progression et les nouvelles requêtes entrantes sont gérées par la nouvelle révision de votre service déployée.

Ainsi, le service de l'exemple précédent peut comporter jusqu'à 10 instances au total (5 pour chaque révision) pendant la période suivant le déploiement de la nouvelle révision. La durée nécessaire à l'arrêt des instances de la révision précédente dépend du temps nécessaire au traitement complet de toutes les requêtes actives. Vous devez donc également en tenir compte dans votre définition d'une limite maximale d'instances appropriée.