Par défaut, les services Cloud Run sont configurés avec un maximum de 100 instances. Vous pouvez augmenter ce nombre jusqu'au maximum autorisé pour votre région. La limite maximale pour chaque région est également affectée par la configuration de processeur et de 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:
- Valeur de référence du quota régional divisée par le multiple demandé de 1 CPU
- Valeur de référence du quota régional divisée par le multiple de 2 Go de mémoire demandé
Par exemple, un quota de référence de 1 000 instances avec 4 Go de mémoire ou 2 processeurs aura une limite effective de 500.
Vous pouvez consulter le quota de référence par région sur la page Quotas de la console.
Augmenter le quota régional de référence
Si vous avez besoin d'un nombre maximal d'instances plus élevé 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 à suivre pour configurer les limites d'instance maximales pour vos services.
Valeur d'instance maximale optimale pour les services basés sur des événements
Les services basés sur les événements, tels que les fonctions, peuvent connaître des pics de trafic occasionnels en fonction des événements entrants. Pour déterminer une valeur d'instance maximale optimale pour ces services, vous devez tenir compte de facteurs tels que le temps d'invocation du service, l'invocation moyenne attendue, la fréquence d'invocation maximale et la tolérance aux pannes en cas d'échec d'invocation.
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 une valeur maximale d'instances inférieure à celle que votre service peut accepter.
Déploiements
Lorsque vous déployez une nouvelle révision, Cloud Run migre le trafic de l'ancienne version 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'à cinq 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.
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.