À propos du nombre maximal d'instances

Par défaut, les services Cloud Run disposent d'un nombre maximal d'instances déterminé par la plus basse des limites de quota applicables suivantes. La limite maximale de 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 limite d'instance régional de référence divisé par le multiple demandé de 1 processeur
  • quota régional de référence de la limite d'instance, divisé par le multiple demandé de 2 Go de mémoire
  • quota de processeurs régional divisé par la configuration de processeur pour le service.
  • quota de mémoire régional divisé par la configuration de mémoire pour le service.
  • quota de GPU régional, avec ou sans redondance zonale, divisé par la configuration de GPU pour le service.

Par exemple, un quota d'instance de référence de 1 000 instances avec une limite de 4 Go de mémoire ou de 2 processeurs, 2 000 vCPU et une limite de 4 000 GiBy obtient une limite effective de 500.

Vous pouvez consulter la limite d'instances de référence par région pour votre région sur la page Quotas de la console.

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

Si vous avez besoin d'un plus grand nombre maximal d'instances pour votre région dans laquelle votre service Cloud Run est déployé, vous pouvez demander une augmentation du quota.

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

La section suivante décrit les bonnes pratiques de configuration des 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 subir des pics de trafic sporadiques en fonction des événements entrants. Pour déterminer une valeur d'instance maximale optimale pour ces services, vous devez prendre en compte des facteurs tels que la durée d'appel du service, la fréquence d'appel moyenne attendue, la fréquence maximale d'appel et la tolérance aux pannes en cas d'échec 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 effectue un scaling à la hausse en créant des instances pour 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 traiter 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 à des 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. Définir une limite élevée ne signifie pas 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 général, Cloud Run accorde la priorité à la limite spécifiée plutôt que d'effectuer un scaling à la hausse et potentiellement de 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 au nombre maximal d'instances spécifié. Si votre service ne peut pas tolérer ce comportement temporaire, vous pouvez appliquer une marge de sécurité et définir une valeur maximale d'instances inférieure à celle qu'il peut tolérer.

Déploiements

Lorsque vous déployez une nouvelle révision, Cloud Run migre le trafic de la révision précédente vers la nouvelle. Étant donné que les limites maximales d'instances sont définies de manière indépendante pour chaque révision, vous pouvez dépasser temporairement la limite spécifiée pendant la période suivant le déploiement.

Par exemple, un service peut avoir une limite maximale d'instances de 5. En temps normal, le service effectue un scaling jusqu'à cinq instances lorsqu'il traite les requêtes. Lorsque vous déployez une nouvelle révision, celle-ci dispose de sa propre limite maximale d'instances de 5.

Les requêtes déjà traitées par la révision précédente ne sont pas interrompues lorsque vous déployez une nouvelle révision. Au lieu de cela, ces requêtes continuent d'avancer. Les nouvelles requêtes entrantes seront traitées par la révision récemment déployée de votre service.

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