Tous les produits
Search
Centre de documentation

Function Compute:Limites de mise à l'échelle des instances et politiques d'élasticité

Dernière mise à jour :Sep 06, 2026

Function Compute met automatiquement à l'échelle les instances pour gérer le trafic entrant. Deux modes sont disponibles : à la demande et provisionné, chacun ayant son propre comportement et ses propres limites de mise à l'échelle. Pour les instances provisionnées, vous pouvez également configurer une mise à l'échelle planifiée et une mise à l'échelle basée sur des seuils afin d'ajuster la capacité en fonction des modèles de trafic.

Fonctionnement de la mise à l'échelle des instances

Function Compute achemine toujours les requêtes entrantes vers les instances inactives existantes en priorité. Lorsque toutes les instances sont occupées, il en crée de nouvelles. La mise à l'échelle se poursuit jusqu'à ce que la charge de requêtes soit absorbée ou que le nombre d'instances atteigne la limite régionale.

Deux contraintes régissent la vitesse de mise à l'échelle :

  • Nombre maximal d'instances pouvant faire l'objet d'un burst — nombre maximal de nouvelles instances pouvant être créées lors d'un seul burst

  • Taux de croissance maximal des instances — vitesse à laquelle les instances peuvent être ajoutées au fil du temps, mesurée en instances par minute

Ces deux limites s'appliquent de manière égale aux instances à la demande et aux instances provisionnées au sein d'une même région.

Mise à l'échelle des instances à la demande

Lorsque la vitesse de mise à l'échelle ou le nombre d'instances dépasse la limite régionale, Function Compute renvoie un code HTTP 429 pour indiquer une limitation de débit (throttling). La figure suivante illustre les trois phases lors d'une augmentation soudaine du trafic.

image

  • Phase 1 — Les instances démarrent immédiatement pour absorber la hausse de trafic. Des démarrages à froid se produisent, mais aucune limitation de débit n'est appliquée, car la limite de burst n'a pas encore été atteinte.

  • Phase 2 — La limite de burst est atteinte. La création de nouvelles instances est désormais contrainte par le taux de croissance. Certaines requêtes subissent une limitation de débit.

  • Phase 3 — Le nombre total d'instances atteint le plafond régional. La limitation de débit se poursuit pour les requêtes qui ne peuvent pas être traitées.

Mise à l'échelle des instances provisionnées

Les instances provisionnées sont pré-initialisées et maintenues en réserve avant l'arrivée de toute invocation. Cela élimine les démarrages à froid pour la capacité réservée et réduit le risque de limitation de débit lors des pics de trafic.

La figure suivante présente le même scénario de pic de trafic avec des instances provisionnées en place.

image

  • Phase 1 — Toutes les requêtes entrantes sont acheminées vers les instances provisionnées. Aucun démarrage à froid ni limitation de débit ne se produit tant que la capacité provisionnée n'est pas saturée.

  • Phase 2 — Les instances provisionnées sont saturées. Function Compute commence à créer des instances à la demande pour gérer le débordement. Des démarrages à froid se produisent, mais la limitation de débit est toujours évitée tant que la limite de burst n'est pas atteinte.

Limites de vitesse de mise à l'échelle par région

Région

Nombre maximal d'instances pouvant faire l'objet d'un burst

Taux de croissance maximal des instances

Chine (Hangzhou), Chine (Shanghai), Chine (Pékin), Chine (Zhangjiakou) et Chine (Shenzhen)

300

300 par minute

Autres régions

100

100 par minute

  • Les limites sont partagées entre toutes les fonctions d'un même compte au sein d'une région : les instances à la demande et les instances provisionnées sont comptabilisées ensemble.

  • Les instances accélérées par GPU mettent plus de temps à se mettre à l'échelle que les instances CPU. Utilisez le mode provisionné pour pré-allouer des instances accélérées par GPU et éviter les retards de mise à l'échelle.

Pour demander des vitesses de mise à l'échelle plus rapides, rejoignez le groupe DingTalk (ID de groupe : 64970014484 ) pour obtenir une assistance technique.

Mise à l'échelle automatique des instances provisionnées

Au-delà d'un nombre fixe d'instances provisionnées, vous pouvez configurer des ajustements automatiques grâce à la mise à l'échelle planifiée et à la mise à l'échelle basée sur des seuils. Ces politiques permettent d'aligner la capacité sur le trafic réel et d'améliorer l'utilisation des instances.

Important
  • Lorsqu'une politique d'élasticité est active, elle remplace le paramètre initial Minimum Instances que vous avez configuré pour la fonction. Pendant les périodes où aucune politique d'élasticité n'est en vigueur, le système revient au paramètre Minimum Instances initialement configuré.

  • Si vous configurez plusieurs politiques d'élasticité, le système calcule le paramètre Minimum Instances que chaque politique déclencherait, et utilise la valeur maximale parmi les politiques actuellement en vigueur comme paramètre Minimum Instances effectif.

Pour plus d'informations, consultez la rubrique Comment le nombre minimal actuel d'instances est-il calculé ?.

Mise à l'échelle planifiée

Utilisez la mise à l'échelle planifiée lorsque le trafic suit un modèle prévisible, par exemple des heures de pointe pendant les heures ouvrables ou des pics de trafic liés à des événements spécifiques. Lorsque les invocations simultanées dépassent la capacité planifiée, le débordement est acheminé vers des instances à la demande.

Configuration de la mise à l'échelle planifiée

La figure suivante illustre un cycle typique de montée et de descente en charge autour d'un pic de trafic.

image

L'extrait de code suivant configure deux politiques planifiées via l'API PutProvisionConfig pour une fonction nommée function_1. Le fuseau horaire est Asia/Shanghai (UTC+8). Du 1er au 30 août 2024, le nombre d'instances provisionnées augmente à 50 à 20 h 00 et retombe à 10 à 22 h 00 chaque jour.

"scheduledActions": [
    {
      "name": "scale_up_action",
      "startTime": "2024-08-01T10:00:00",
      "endTime": "2024-08-30T10:00:00",
      "target": 50,
      "scheduleExpression": "cron(0 0 20 * * *)",
      "timeZone": "Asia/Shanghai"
    },
    {
      "name": "scale_down_action",
      "startTime": "2024-08-01T10:00:00",
      "endTime": "2024-08-30T10:00:00",
      "target": 10,
      "scheduleExpression": "cron(0 0 22 * * *)",
      "timeZone": "Asia/Shanghai"
    }
  ]

Paramètres

Paramètre

Description

name

Nom de la tâche de mise à l'échelle planifiée.

startTime

Date et heure de début de la politique. Par défaut, l'heure UTC est utilisée si aucun fuseau horaire n'est spécifié.

endTime

Date et heure d'expiration de la politique. Par défaut, l'heure UTC est utilisée si aucun fuseau horaire n'est spécifié.

target

Nombre cible d'instances provisionnées.

scheduleExpression

Planification au format at(...) ou cron(...). Par défaut, l'heure UTC est utilisée si aucun fuseau horaire n'est spécifié.

timeZone

Fuseau horaire de la planification.

Formats des expressions de planification

Deux formats sont pris en charge :

  • Expression At — at(yyyy-mm-ddThh:mm:ss) : s'exécute une seule fois à la date et à l'heure spécifiées. Par exemple, at(2024-04-01T20:00:00) avec timeZone: Asia/Shanghai se déclenche à 20 h 00 le 1er avril 2024 (UTC+8).

  • Expression Cron — cron(0 0 4 * * *) : s'exécute selon un planning récurrent au format crontab standard. Par exemple, cron(0 0 20 * * *) avec timeZone: Asia/Shanghai se déclenche tous les jours à 20 h 00 (UTC+8).

Champs des expressions Cron

Les expressions Cron suivent le format suivant : Seconds Minutes Hours Day-of-month Month Day-of-week

Champ

Valeurs valides

Caractères spéciaux autorisés

Secondes

0–59

Aucun

Minutes

0–59

, - * /

Heures

0–23

, - * /

Jour du mois

1–31

, - * ? /

Mois

1–12 ou JAN–DEC

, - * /

Jour de la semaine

1–7 ou MON–SUN

, - * ?

Caractères spéciaux

Caractère

Signification

Exemple

*

Tout / chaque

Dans Minutes, * signifie chaque minute.

,

Liste de valeurs

Dans Day-of-week, MON,WED,FRI signifie chaque lundi, mercredi et vendredi.

-

Plage

Dans Hours, 10-12 signifie de 10 h 00 à 12 h 00 dans le fuseau horaire spécifié.

?

Valeur non spécifiée

Utilisé lorsqu'une date est définie sans la lier à un jour spécifique de la semaine.

/

Incrément (n/m = toutes les m unités à partir de n)

Dans Minutes, 3/5 signifie toutes les 5 minutes à partir de la 3e minute.

Mise à l'échelle basée sur les seuils

Utilisez la mise à l'échelle basée sur les seuils lorsque le trafic est difficile à prévoir. Function Compute collecte périodiquement les métriques de concurrence ou d'utilisation des ressources des instances provisionnées et ajuste le nombre d'instances pour rester dans la plage minCapacity–maxCapacity que vous définissez.

La mise à l'échelle basée sur les seuils nécessite l'activation préalable de la collecte des métriques au niveau des instances. Sans cela, vous obtiendrez une erreur 400 InstanceMetricsRequired . Consultez Activer la collecte des métriques au niveau des instances .
La métrique ProvisionedConcurrencyUtilization suit uniquement les instances provisionnées ; la concurrence des instances à la demande est exclue.
L'utilisation de la concurrence correspond au rapport entre le nombre de requêtes concurrentes actuellement traitées par les Minimum Instances et le nombre maximal de requêtes concurrentes que les Minimum Instances peuvent prendre en charge. La valeur varie de 0 à 1.

Configurer la mise à l'échelle basée sur les seuils

La figure suivante illustre comment Function Compute effectue une montée en charge lorsque le seuil d'utilisation de la concurrence est dépassé et une descente en charge lorsque l'utilisation diminue.

image

L'extrait de code suivant configure une politique de mise à l'échelle basée sur les seuils via l'API PutProvisionConfig pour function_1. Le fuseau horaire est Asia/Shanghai (UTC+8) et la politique est active du 1er août 2024 au 30 août 2024. La politique suit la métrique Provisioned concurrency utilization ProvisionedConcurrencyUtilization, avec une valeur cible de 60 % pour l'Provisioned concurrency utilization. Lorsque l'utilisation dépasse 60 %, la montée en charge démarre, jusqu'à un maximum de 100 instances. Lorsque l'utilisation tombe en dessous de 60 %, la descente en charge démarre, jusqu'à un minimum de 10 instances.

"targetTrackingPolicies": [
    {
      "name": "action_1",
      "startTime": "2024-08-01T10:00:00",
      "endTime": "2024-08-30T10:00:00",
      "metricType": "ProvisionedConcurrencyUtilization",
      "metricTarget": 0.6,
      "minCapacity": 10,
      "maxCapacity": 100,
      "timeZone": "Asia/Shanghai"
    }
  ]

Paramètres

Paramètre

Description

name

Nom de la tâche de mise à l'échelle basée sur les seuils.

startTime

Moment où la politique commence. Par défaut, l'heure UTC est utilisée si aucun fuseau horaire n'est spécifié.

endTime

Moment où la politique expire. Par défaut, l'heure UTC est utilisée si aucun fuseau horaire n'est spécifié.

metricType

Métrique à suivre. Exemple : ProvisionedConcurrencyUtilization.

metricTarget

Valeur cible de la métrique. Par exemple, si vous définissez ce paramètre sur 0,6, la montée en charge démarre lorsque l'Provisioned concurrency utilization dépasse 60 %, et la descente en charge démarre lorsqu'elle tombe en dessous de 60 %.

minCapacity

Nombre minimal d'instances provisionnées.

maxCapacity

Nombre maximal d'instances provisionnées.

timeZone

Fuseau horaire pour la fenêtre de la politique.

Calculs de mise à l'échelle

Function Compute effectue une montée en charge agressive et une descente en charge progressive. Le nombre d'instances cible est le plus petit entier supérieur ou égal au résultat calculé.

  • Cible de montée en charge = Instances actuelles × (Valeur actuelle de la métrique / metricTarget)

  • Cible de descente en charge = Instances actuelles × Coefficient de descente en charge × (1 − Valeur actuelle de la métrique / metricTarget)

Le coefficient de descente en charge est un paramètre système compris entre 0 (exclus) et 1 qui ralentit la descente en charge pour éviter les oscillations. Il ne nécessite aucune configuration manuelle.

Exemple : Si la valeur actuelle de la métrique est de 80 %, la cible Provisioned concurrency utilization configurée est de 40 % et le nombre minimal actuel d'instances est de 100 :

Cible de montée en charge = 100 × (80 % / 40 %) = 200 instances

Function Compute augmente le nombre à 200 (plafonné à maxCapacity) pour ramener l'utilisation à la cible de 40 %.

Comment le nombre minimal actuel d'instances est-il calculé ?

L'exemple suivant montre comment le nombre minimal actuel d'instances est déterminé conjointement par le nombre minimal d'instances initialement configuré et les valeurs cibles définies dans les politiques de mise à l'échelle planifiée.

Configuration :

  • defaultTarget : 5

  • Deux politiques planifiées, fuseau horaire Asia/Shanghai (UTC+8), actives du 9 janvier au 11 janvier 2025

    • Montée en charge vers 20 à 10 h 00 chaque jour

    • Descente en charge vers 10 à 22 h 00 chaque jour

{
    "defaultTarget": 5,
    "scheduledActions": [
        {
            "name": "scale_up_action",
            "startTime": "2025-01-09T10:00:00",
            "endTime": "2025-01-11T00:00:00",
            "target": 20,
            "scheduleExpression": "cron(0 0 10 * * *)",
            "timeZone": "Asia/Shanghai"
        },
        {
            "name": "scale_down_action",
            "startTime": "2025-01-09T10:00:00",
            "endTime": "2025-01-11T00:00:00",
            "target": 10,
            "scheduleExpression": "cron(0 0 22 * * *)",
            "timeZone": "Asia/Shanghai"
        }
    ]
}

La figure suivante montre l'évolution du nombre d'instances provisionnées au fil du temps avec cette configuration.

image

Concurrence maximale

La concurrence maximale correspond au nombre total de requêtes concurrentes que toutes les instances provisionnées peuvent traiter simultanément. Elle dépend du paramètre de concurrence des instances pour votre fonction.

  • Instances à requête unique (chaque instance traite une requête à la fois) : Concurrence maximale = Nombre d'instances

  • Instances à requêtes multiples (chaque instance traite plusieurs requêtes simultanément) : Concurrence maximale = Nombre d'instances × Concurrence des instances

Pour plus de détails sur la configuration de la concurrence des instances et son impact sur le comportement de mise à l'échelle, consultez Configurer la concurrence des instances.

Étapes suivantes