Configuration de la mise à l'échelle d'application

Avec « IBM Cloud® Code Engine », vous n'avez pas à vous soucier de la mise à l'échelle de votre application, car le nombre d'instances en cours d'exécution est automatiquement augmenté ou réduit (jusqu'à zéro) en fonction de la charge de travail. Grâce à la mise à l'échelle automatique, vous n'avez pas payer pour les ressources que vous n'utilisez pas.

Code Engine surveille le nombre de demandes dans le système et évalue les instances d'application en haut et en bas pour répondre au chargement des demandes entrantes, y compris toutes les connexions HTTP à votre application. Ces connexions HTTP peuvent être des requêtes provenant de l'extérieur de votre projet, d'autres charges de travail en cours d'exécution dans votre projet, ou des producteurs évènements auxquels vous pourriez être abonné, quel que soit l'endroit où se trouvent ces producteurs. Code Engine réplique automatiquement les instances d'application et configure l'infrastructure réseau pour charger l'équilibrage des demandes dans toutes les instances.

Fonctionnement de la mise à l'échelle

Code Engine surveille le nombre de demandes dans le système et augmente ou réduit les instances d'application entrantes, dans les limites des paramètres d'accès concurrents de l'application.

Pour observer la mise à l'échelle d'application à partir de la console Code Engine, accédez à la page propre à votre application. Pendant l'exécution de l'application, le nombre d'instances en cours d'exécution est 1 ou plus, en fonction du nombre maximal d'instances que vous avez spécifié. Lorsque l'application traite moins de demandes que son accès concurrent cible configuré, elle réduit le nombre d'instances en cours d'exécution au nombre minimal d'instances configuré. Si le nombre minimum d'instances est défini sur « 0 » (valeur par défaut), l'application est réduite à zéro et le nombre d'instances de l'application correspond à celui d' 0. Lorsque l'application est réduite et qu'une demande est acheminée vers l'application, Code Engine augmente la taille de l'application et achemine la demande vers l'instance d'application nouvellement créée.

Pour que les applications puissent être mises à l'échelle proprement, votre code d'application doit gérer un signal SIGTERM. Lorsque Code Engine réduit automatiquement sa capacité, un signal SIGTERM est envoyé à votre application. Si votre application ne gère pas le signal SIGTERM, vos instances d'application restent à l'état Terminating pendant la durée configurée par la valeur de délai d'attente de la demande (la valeur par défaut est de 300 secondes). Une fois le délai d'expiration de la requête écoulé, Code Engine envoie un signal SIGKILL pour forcer l'arrêt des instances de l'application se trouvant dans l'état « Terminating ».

Limites de la mise à l'échelle

Vous pouvez configurer les limites de mise à l'échelle en définissant une plage de valeurs pour le nombre minimum et maximum d'instances, à l'intérieur de laquelle Code Engine ajuste automatiquement le nombre d'instances de votre application en cours d'exécution. Configurez cette plage lorsque vous créez ou mettez à jour des applications.

  • Nombre minimal d'instances-Nombre minimal d'instances de l'application qui sont toujours en cours d'exécution, même si aucune demande n'est traitée. Si la valeur est 0 (par défaut), Code Engine supprime toutes les instances quand aucun trafic n'atteint l'application. Pour toujours conserver une instance en cours d'exécution de votre application, définissez cette valeur sur une valeur supérieure à 0. Lorsque vous créez ou mettez à jour une application avec Code Engine à partir de la console, définissez la valeur minimale du nombre d'instances dans la section Mise à l'échelle automatique de l'onglet Ressources et mise à l'échelle. Dans l'interface de ligne de commande (CLI), spécifiez l'option « --min-scale » sur la commande app create et app update.

  • Nombre maximal d'instances-Nombre maximal d'instances pouvant être exécutées pour l'application. La mise à l'échelle automatique s'effectue jusqu'à cette limite. Si vous définissez cette valeur sur « 0 », l'application s'adapte automatiquement aux besoins, et la mise à l'échelle de l'application n'est limitée que par le nombre d'instances autorisé par le quota de ressources attribué au projet de votre application. Voir Limites et quotas pour Code Engine. Lorsque vous créez ou mettez à jour une application avec Code Engine à partir de la console, définissez la valeur du nombre maximal d'instances dans la section Mise à l'échelle automatique de l'onglet Ressources et mise à l'échelle. Dans l'interface de ligne de commande (CLI), spécifiez l'option « --max-scale » sur la commande app create et app update. La valeur par défaut de cette option est « 10 ».

Lorsque vous connectez vos applications à des producteurs d'événements, pensez à tenir compte de la fréquence et du volume des événements de ces producteurs lorsque vous définissez vos limites d'échelle. Par exemple, si vous prévoyez de recevoir de nombreux événements simultanément et que le traitement de chaque événement peut prendre plusieurs minutes, vous aurez peut-être besoin d'une valeur maximale d'évolutivité plus élevée que si chaque événement pouvait être traité rapidement. Une valeur trop basse peut retarder la réception des événements ou même entraîner leur suppression en raison des délais d'attente de libération des ressources de traitement.

Paramètres de mise à l'échelle automatique pour la simultanéité et la temporisation

Utilisez les paramètres de configuration suivants pour contrôler la mise à l'échelle de l'application.

  • Concurrence - Cette valeur indique le nombre de requêtes que chaque instance de votre application peut traiter simultanément. Par exemple, une valeur de 100 signifie que votre code peut traiter 100 requêtes simultanées. Cette valeur est une "limite absolue", ce qui signifie que Code Engine ne permet pas que des demandes dépassant ce nombre (spécifié avec le paramètre d'accès concurrents) atteignent une instance de votre application. Par conséquent, si votre code est mono-thread et ne peut traiter qu'une seule requête à la fois, pensez à définir le paramètre de concurrence sur « 1 ». Lorsque le nombre spécifié de requêtes est envoyé à toutes les instances en cours d'exécution de votre application, Code Engine augmente alors le nombre d'instances afin de se préparer à un afflux de requêtes. Lorsque vous créez ou mettez à jour une application avec Code Engine à partir de la console, définissez la valeur d'accès concurrent maximale dans la section Mise à l'échelle automatique de l'onglet Ressources & mise à l'échelle. Avec l'interface de ligne de commande, spécifiez l'option --concurrency dans les commandes app create et app update.

  • Concurrence cible - Cette valeur fait office de « limite souple » ou de nombre de requêtes par instance que vous souhaitez voir traitées dans un système en charge. Par exemple, si vous définissez concurrency comme 100 et target concurrency comme 70, alors Code Engine tente de limiter le nombre de requêtes par instance à 70.Le fait de définir cette option ne garantit pas que le nombre de requêtes par instance ne dépassera pas 70, car cela risque fort de se produire en cas d'augmentation du trafic. Cependant, la marge située entre 70 et 100 permet au système de créer de nouvelles instances pour ramener la charge par instance à 70 (ou au-dessous). Si target concurrency n'est pas spécifié, la valeur par défaut est celle de concurrency. Lorsque vous créez ou mettez à jour une application à l'aide de l' Code Engine depuis la console, définissez la valeur cible de concurrence dans la section « Autoscaling » de l'onglet « Resources & scaling ». Dans l'interface de ligne de commande (CLI), spécifiez l'option « --concurrency-target » sur la commande app create et app update.

  • Délai d'attente de la demande-Délai, en secondes, pendant lequel l'application doit répondre aux demandes, faute de quoi elles échouent. Lorsque vous créez ou mettez à jour une application avec Code Engine à partir de la console, définissez la valeur de délai d'attente de la demande dans la section Mise à l'échelle automatique de l'onglet Ressources et mise à l'échelle. Dans l'interface de ligne de commande (CLI), spécifiez l'option « --request-timeout » sur la commande app create et app update.

  • Délai de réduction d'échelle - Durée, exprimée en secondes, qui doit s'écouler à un niveau de concurrence réduit avant que l'application ne passe à une échelle inférieure. Si vous connaissez le modèle des demandes entrantes dans votre application, vous pouvez choisir de spécifier une valeur supérieure à la valeur par défaut de 0 pour retarder la réduction de votre application. Si vous utilisez une valeur élevée pour cette option, le nombre moyen d'instances d'application s'exécutant simultanément peut augmenter, ce qui entraîne des coûts supplémentaires. Même avec le paramètre de délai de mise à l'échelle par réduction de la valeur 0, le système attend un court laps de temps avant que l'application ne réduise le nombre d'instances pour s'assurer qu'une baisse de l'accès concurrent aux demandes est suffisamment stable pour justifier une mise à l'échelle par réduction. Lorsque vous créez ou mettez à jour une application avec Code Engine à partir de la console, définissez la valeur de délai de mise à l'échelle dans la section Mise à l'échelle automatique de l'onglet Ressources et mise à l'échelle. Dans l'interface de ligne de commande (CLI), spécifiez l'option « --scale-down-delay » sur la commande app create et app update.

Par exemple, si la valeur du nombre maximal d'instances est définie sur 10 et que l'accès concurrent est défini sur 100, une application peut traiter 1000 demandes simultanées avant que la mise en file d'attente potentielle des demandes ne se produise. Si vous prévoyez plus de 1000 demandes simultanément, vous pouvez envisager d'augmenter la valeur du nombre maximal d'instances pour votre application.

Pour plus d'informations sur le fonctionnement de Code Engine, consultez Réglage du délai de réduction IBM Cloud Code Engine pour réduire les temps de réponse des applications.

Si vous définissez le nombre minimal d'instances égal au nombre maximal d'instances, la mise à l'échelle n'a pas lieu et les valeurs de délai de mise à l'échelle par réduction et de devise cible ne s'appliquent pas. Cependant, la valeur d'accès concurrent est toujours en vigueur.

Exemple de scénario de mise à l'échelle automatique

Supposons que vous disposiez d'une application configurée avec les paramètres de mise à l'échelle automatique suivants.

  • Nombre minimal d'instances = 4
  • Nombre maximal d'instances = 20
  • Accès concurrent = 2

Avec ces paramètres, votre application peut traiter 2 demandes simultanées en même temps. Lorsqu'il n'y a pas de trafic, votre application est automatiquement mise à l'échelle jusqu'à 4 instances. Les 4 instances ne peuvent traiter que 4 * 2 (devise) = 8 demandes. L'application peut évoluer jusqu'à un maximum de 20 instances, de sorte que les 20 instances puissent traiter 20 * 2 (devise) = 40 demandes, en supposant des paramètres d'UC et de mémoire suffisants pour l'application.

Supposons que votre application soit une application Web statique qui nécessite 6 appels à votre application pour charger une page de connexion. Supposons que 10 personnes se connectent à votre page de connexion d'application en même temps (10 * 6 = 60 appels). Etant donné que 60 appels sont supérieurs à 40 demandes pouvant être traitées par votre application, les utilisateurs de l'application sont susceptibles d'observer une lenteur lors de la mise en file d'attente des appels.

Après une minute d'absence de trafic sur votre application, Code Engine commence à diminuer automatiquement. Lorsque votre application est mise à l'échelle vers le bas, certaines instances sont définies avec le statut Terminating. Code Engine envoie un signal SIGTERM à votre application et votre code doit traiter ce signal et s'arrêter. Si votre application ne gère pas ce signal, vos instances d'application restent à l'état Terminating pendant la durée configurée par la valeur de délai d'attente de la demande (la valeur par défaut est de 300 secondes). Après le délai d'attente de la demande, Code Engine envoie un signal SIGKILL pour forcer l'arrêt des instances d'application à l'état Terminating.

Si vous disposez de 8 instances actives et que 12 instances restent à l'état Terminating pendant 300 secondes (5 minutes). Ces 12 instances ne reçoivent aucune demande. Si plus de 8 * 2 (devise) = 16 demandes arrivent, Code Engine augmente les nouvelles instances.

Dans cet exemple, la valeur d'accès concurrent de 2 est faible pour ce contenu statique. Vous devez déterminer les valeurs de mise à l'échelle automatique à définir pour votre application, qui dépendent de ce que l'implémentation de votre application peut gérer avec les ressources d'UC et de mémoire qui lui sont affectées.

Optimisation du temps d'attente et du débit

Pour optimiser le temps d'attente et le débit de votre application, comprenez les avantages et les inconvénients de certains modèles courants et des meilleures pratiques pour configurer l'accès concurrent du conteneur.

Utilisez le paramètre de concurrence pour définir le nombre maximal de requêtes pouvant être traitées simultanément par instance lorsque vous créez ou mettez à jour une application. A partir de la console Code Engine , définissez la valeur d'accès d'accès concurrent dans la section Exécution. Avec l'interface de ligne de commande, utilisez l'option --concurrency (alias --cn) avec la commande app create ou app update.

Exemples d'accès concurrent dans les applications Code Engine
Modèle Avantages Inconvénients
Accès concurrent unique, --cn=1 Choisissez la configuration d'accès concurrent unique lorsque l'application gère une charge de travail nécessitant beaucoup de mémoire ou d'UC, car une seule demande accède à l'instance d'application à la fois et obtient donc la quantité totale d'UC et de mémoire configurée pour l'instance. Les applications qui utilisent le modèle d'accès concurrent unique sont rapidement mises à l'échelle. La mise à l'échelle peut introduire un temps d'attente supplémentaire et un débit plus faible, car il est plus coûteux de créer une nouvelle instance d'application que de réutiliser une instance existante. Ne choisissez pas ce modèle si les demandes peuvent être traitées simultanément et si le temps d'attente représente un aspect critique de l'application.
Volume d'accès concurrents élevé, --cn=100 (par défaut) ou supérieur Choisissez cette configuration si votre application gère un volume élevé de charges de travail de demande ou de réponse HTTP qui ne nécessitent pas beaucoup d'UC ou de mémoire et peuvent attendre des ressources. Vous pouvez opter pour cette configuration de concurrence dans le cas d'un backend d'API qui lit et écrit des données lors d'opérations de création, de récupération, de mise à jour et de suppression dans une base de données distante. Alors que certaines demandes attendent les E-S, d'autres demandes peuvent être traitées sans affecter le temps d'attente et le débit globaux. Ce paramètre n'est pas idéal lorsque les demandes simultanées sont en concurrence pour l'UC, la mémoire ou les E-S, car la concurrence pour les ressources peut retarder l'exécution et avoir un impact négatif sur le temps d'attente et le débit.
Accès concurrents optimaux, --cn=N Choisissez la configuration d'accès concurrents optimaux si vous connaissez la quantité de ressources nécessaires pour une seule demande afin de respecter le temps de réponse souhaité pour votre application. Vous pouvez opter pour cette configuration si votre application est un outil de traduction en langage naturel, dans lequel le modèle d’apprentissage automatique utilisé pour la conversion linguistique est de 32 GB, et où un seul calcul de traduction nécessite environ 0.7 vCPU par requête. Vous pouvez choisir une configuration de 9 UC (vCPU) et 32 Go de mémoire par instance. Le nombre d'accès concurrents de conteneur optimaux est d'environ 13 (9 vCPU/0.7 vCPU). Ne choisissez pas la configuration d'accès concurrents optimaux si vous ne connaissez pas les besoins en ressources de votre application. La définition d'une configuration d'accès concurrents de conteneur inappropriée peut conduire à une mise à l'échelle trop agressive ou trop lente, ce qui peut avoir un impact sur le temps d'attente, le taux d'erreur et les coûts de votre application. Pour plus d'informations, voir Détermination des accès concurrents de votre conteneur d'applications.
Accès concurrents infinis, --cn=0 (désactivé) Désactivé La configuration d'accès concurrents infinis n'est pas prise en charge dans Code Engine. La configuration d'accès concurrents infinis réachemine autant de demandes que possible vers une seule instance d'application, ce qui peut retarder la mise à l'échelle d'instances d'application supplémentaires.

Détermination des accès concurrents de votre conteneur d'applications

La valeur optimale des accès concurrents de conteneur est déterminée par le nombre maximal de demandes simultanées que l'application peut traiter avec un temps d'attente de demande acceptable.

Les accès concurrents de conteneur ont un impact direct sur le taux de réussite, le temps d'attente et le débit de l'application. Lorsque la valeur de concurrence du conteneur est trop élevée pour que l'application puisse la gérer, la latence et le débit s'en trouvent affectés négativement, et vous pouvez observer des réponses d'erreur de type « 502 » et « 503 ».

Lorsque la valeur des accès concurrents de conteneur est trop faible pour l'application, le système met à l'échelle l'application plus rapidement et répartit la demande sur de nombreuses instances d'application, ce qui entraîne des coûts et un temps d'attente supplémentaires. Lors d'une rafale de charge, une faible valeur d'accès concurrents peut également conduire à des réponses 502 temporaires lorsque les mémoires tampon internes du système s'exécutent.

Pour déterminer la configuration des accès concurrents de conteneur pour votre application, examinez les demandes et le temps d'attente.

  1. Créez une application et définissez son accès concurrent à 1000 (maximum) et aussi bien min-scale etmax-scale jusqu'à1.

    ibmcloud ce application create --name APPNAME --image APPIMAGE --min-scale=1 --max-scale=1 --concurrency=1000
    
  2. Commencez par envoyer un taux élevé de demandes. Si des erreurs 502 se produisent, diminuez le taux jusqu'à ce que le résultat affiche 100 % de réussite.

  3. Recherchez le temps d'attente de la demande de la sortie de l'étape 2. Si le temps d'attente de la demande n'est pas acceptable, réduisez encore le taux de demande jusqu'à ce que le temps d'attente de la demande soit acceptable. Notez que la durée de la demande est également importante car elle fait une différence si le calcul de la demande prend 2 secondes ou 100 millisecondes.

    Le taux de demande et le temps d'attente acceptables varient en fonction des caractéristiques de votre application et de votre configuration de mise à l'échelle. Par exemple, si le calcul dans votre application prend environ 100 ms et que votre paramètre d'accès concurrents est défini sur 10, une instance d'application peut traiter environ 100 demandes par seconde avec un temps d'attente d'environ 100 ms (en ignorant le temps d'attente du réseau).

  4. Pour calculer la valeur d'accès concurrents de conteneur de votre application, prenez le taux de l'étape 2 (en req/s) et divisez-le par le temps d'attente de l'étape 3 (en secondes) : CC = RATE/LATENCY. Par exemple, si le taux est de 80 demandes par seconde, et que le temps d'attente est de 2 secondes, le résultat d'accès concurrents obtenu est = 80 req/s / 2 s = 40.

  5. Mettez à jour l'application pour définir les accès concurrents de conteneur sur la valeur trouvée à l'étape précédente et réexécutez la charge de travail pour vérifier si le taux de réussite et le temps d'attente sont acceptables.

  6. Expérimentez avec l'application en augmentant la valeur des accès concurrents de conteneur et en observant le taux de réussite et le temps d'attente.

  7. Mettez à jour votre application avec la valeur d'accès concurrent du conteneur optimal et supprimez les limites min-Scale et max-scale pour permettre à l'application de se mettre à l'échelle automatiquement.

Observation de l'évolution de votre application avec l'interface de ligne de commande

Vous pouvez observer le nombre d'instances en cours d'exécution de votre application à l'aide de l'interface de ligne de commande.

  1. Créez une application à l'aide de la commande app create.

    ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld
    
  2. Appelez l'application. Vous pouvez obtenir l'URL de votre application à partir de la sortie de la commande app create ou exécuter ibmcloud ce app get --name myapp --output url.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  3. Exécutez la commande application get pour afficher le statut de votre application. Recherchez la valeur de Running instances. Dans cet exemple, l'application comporte 1 instance en cours. Par exemple :

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    Status Summary:  Application deployed successfully
    Environment Variables:
        Type     Name             Value
        Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
        Literal  CE_APP           myapp
        Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud
        Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
        Literal  CE_REGION        us-south
        Literal  CE_SUBDOMAIN     abcdabcdab
    Image:                icr.io/codeengine/helloworld
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    Revisions:
    myapp-ds8fn-1:
        Age:                6m25s
        Traffic:            100%
        Image:              icr.io/codeengine/helloworld (pinned to fe0446)
        Running Instances:  1
    Runtime:
        Concurrency:    100
        Maximum Scale:  10
        Minimum Scale:  0
        Timeout:        300
    Conditions:
        Type                 OK    Age    Reason
        ConfigurationsReady  true  6m10s
        Ready                true  5m56s
        RoutesReady          true  5m56s
    Events:
        Type    Reason   Age    Source              Messages
        Normal  Created  6m28s  service-controller  Created Configuration "myapp"
        Normal  Created  6m28s  service-controller  Created Route "myapp"
    Instances:
        Name                                       Revision       Running  Status   Restarts  Age
        myapp-ds8fn-1-deployment-79bdd76749-khtmw  myapp-ds8fn-1  2/2      Running  0         32s
    

    Patientez quelques minutes, car la mise à l'échelle jusqu'à zéro de votre application peut prendre quelques minutes.

  4. Exécutez à nouveau la commande application get. Vous constatez que la valeur de Running instances est passée à zéro. Lorsque l'application traite moins de demandes que son accès concurrent cible configuré, elle réduit le nombre d'instances en cours d'exécution au nombre minimal d'instances configuré. Dans ce scénario, le nombre d'instances en cours d'exécution est automatiquement réduit à zéro. Lorsque l'option --min-scale est définie sur 0 (valeur par défaut), le nombre d'instances en cours d'exécution est automatiquement mis à zéro.

    Patientez quelques minutes, car la mise à l'échelle jusqu'à zéro de votre application peut prendre quelques minutes.

    ibmcloud ce application get -n myapp
    

    Exemple de sortie

    OK
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    Image:                icr.io/codeengine/helloworld
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    Revisions:
    myapp-ds8fn-1:
        Age:                12m
        Traffic:            100%
        Image:              icr.io/codeengine/helloworld (pinned to 548d5c)
        Running Instances:  0
    Runtime:
        Concurrency:         100
        Maximum Scale:       10
        Minimum Scale:       0
        Timeout:             300
    Conditions:
        Type                 OK    Age    Reason
        ConfigurationsReady  true  3m7s
        Ready                true  2m54s
        RoutesReady          true  2m54s
    Events:
        Type    Reason   Age    Source              Messages
        Normal  Created  3m21s  service-controller  Created Configuration "myapp"
        Normal  Created  3m20s  service-controller  Created Route "myapp"
    
  5. Appelez à nouveau l'application pour une mise à l'échelle à partir de zéro.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  6. Exécutez à nouveau la commande application get. Vous constatez que la valeur de Running instances a été modifiée à partir de zéro. Par exemple :

    ibmcloud ce application get -n myapp
    

    Exemple de sortie

    OK
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    Status Summary:     Application deployed successfully
    Environment Variables:
        Type     Name             Value
        Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
        Literal  CE_APP           myapp
        Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud
        Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
        Literal  CE_REGION        us-south
        Literal  CE_SUBDOMAIN     abcdabcdab
    Image:                  icr.io/codeengine/helloworld
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    Revisions:
    myapp-00001:
        Age:                42s
        Latest:             true
        Traffic:            100%
        Image:              icr.io/codeengine/helloworld (pinned to 1cee99)
        Running Instances:  1
    Runtime:
    Concurrency:       100
    Maximum Scale:     10
    Minimum Scale:     0
    Scale Down Delay:  0
    Timeout:           300
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  25s
    Ready                true  12s
    RoutesReady          true  12s
    Events:
    Type    Reason   Age  Source              Messages
    Normal  Created  44s  service-controller  Created Configuration "myapp"
    Normal  Created  43s  service-controller  Created Route "myapp"
    Instances:
    Name                                    Revision     Running  Status   Restarts  Age
    myapp-00001-deployment-d59b87654-xkqh7  myapp-00001  3/3      Running  0         43s
    

Définition du nombre minimal et maximal d'instances pour votre application

Vous pouvez modifier le nombre d'instances en cours d'exécution de votre application en mettant à jour la valeur minimale et maximale du nombre d'instances d'application.

La valeur par défaut du nombre minimal d'instances pour votre application est 0. Si votre application ne reçoit aucun trafic, elle s'adapte à 0 et aucune instance de votre application n'est en cours d'exécution. Dans ce cas, votre application peut être plus lente à répondre lorsqu'elle reçoit à nouveau du trafic, alors qu'elle est à nouveau mise à l'échelle. Vous pouvez modifier ce comportement en mettant à jour votre application et en définissant l'échelle minimale sur « 1 », soit via la console, soit depuis l'interface de ligne de commande (CLI).

La valeur par défaut du nombre maximal d'instances pour votre application est 10. Pour plus d'informations, voir Mise à l'échelle des limites.

Modification de la plage de mise à l'échelle automatique à partir de la console

Pour modifier la plage dans laquelle Code Engine effectue la mise à l'échelle automatique du nombre d'instances en cours d'exécution pour une application à partir de la console, procédez comme suit.

  1. Accédez à votre application.
  2. Sélectionnez l'onglet « Configuration ».
  3. Sélectionnez l'onglet « Ressources et évolutivité ».
  4. Définissez le nombre d'instances minimum et maximum pour votre application.
  5. (Facultatif) Passez en revue et définissez les paramètres de simultanéité et de simultanéité des demandes pour la mise à l'échelle automatique de votre application.
  6. Cliquez sur « Déployer » pour enregistrer vos modifications et déployer la nouvelle version de l'application.

Lorsque vous mettez à jour votre application, celle-ci crée une nouvelle révision et achemine le trafic vers cette instance.

Modification de la plage de mise à l'échelle automatique avec l'interface de ligne de commande

Pour modifier la plage dans laquelle Code Engine valide automatiquement le nombre d'instances en cours d'exécution pour une application à l'aide de l'interface de ligne de commande, exécutez la commande application update avec les options --min-scale et --max-scale définies sur le nombre d'instances souhaité pour votre application. Vous pouvez éventuellement définir des paramètres de simultanéité et de simultanéité des demandes pour votre application. Ces options incluent --concurrency, --concurrency-target, --request-timeout et --scale-down-delay. Pour plus d'informations sur la définition de ces valeurs de mise à l'échelle automatique, voir Mise à l'échelle des limites et Paramètres de mise à l'échelle automatique pour les accès simultanés et la temporisation.

Lorsque vous mettez à jour votre application, celle-ci crée une nouvelle révision et achemine le trafic vers cette instance.