Configuración del escalado de una aplicación

Con « IBM Cloud® Code Engine », no tienes que preocuparte por el escalado de tu aplicación, ya que el número de instancias en ejecución de una aplicación se amplía o se reduce automáticamente (hasta cero) en función de las cargas de trabajo entrantes. Con el escalado automático, no se pagan los recursos que no se utilizan.

Code Engine supervisa el número de solicitudes en el sistema y escala las instancias de aplicación hacia arriba y hacia abajo según la carga de las solicitudes entrantes, incluidas las conexiones HTTP a la aplicación. Estas conexiones HTTP pueden ser solicitudes que proceden de fuera del proyecto, de otras cargas de trabajo que se ejecutan en el proyecto o de productores de sucesos a los que podría estar suscrito, independientemente de dónde se encuentren esos productores. Code Engine replica automáticamente las instancias de aplicación y configura la infraestructura de red para equilibrar la carga de las solicitudes entre todas las instancias.

Cómo funciona el escalado

Code Engine supervisa la cantidad de solicitudes en el sistema y amplía o reduce las instancias de la aplicación, dentro de las restricciones de los valores de simultaneidad de la aplicación.

Para observar el escalado de la aplicación desde la consola de Code Engine, vaya a la página de la aplicación específica. Mientras la aplicación se está ejecutando, el número de instancias en ejecución es 1 o superior en función del número máximo de instancias que ha especificado. Cuando la aplicación maneja menos solicitudes que su simultaneidad de destino configurada, la aplicación escala el número de instancias en ejecución hasta el número mínimo configurado de instancias. Si el número mínimo de instancias se establece en « 0 » (valor por defecto), la aplicación se reduce a cero y el número de instancias de la aplicación refleja las instanci 0 es. Cuando la aplicación se escala hacia abajo y se direcciona una solicitud a la aplicación, Code Engine escala la aplicación y direcciona la solicitud a la instancia de aplicación recién creada.

Para que las aplicaciones puedan reducir la escala de forma limpia, el código de aplicación debe manejar una señal SIGTERM. Cuando « Code Engine » reduce automáticamente su capacidad, se envía una señal SIGTERM a tu aplicación. Si la aplicación no maneja la señal SIGTERM, las instancias de la app permanecerán en estado Terminating durante el tiempo configurado por el valor de tiempo de espera de solicitud (el valor predeterminado es 300 segundos). Una vez transcurrido el tiempo de espera de la solicitud, Code Engine envía una señal SIGKILL para detener de forma forzada las instancias de la aplicación que se encuentran en estado « Terminating ».

Límites del escalado

Puedes configurar los límites de escalado estableciendo un rango de valores para el número mínimo y máximo de instancias, dentro del cual Code Engine ajusta automáticamente el número de instancias en ejecución de tu aplicación. Configure este rango al crear o actualizar aplicaciones.

  • Número mínimo de instancias-El número mínimo de instancias de la app que siempre se están ejecutando, incluso si no se procesa ninguna solicitud. Cuando se establece en 0 (valor predeterminado), Code Engine elimina todas las instancias cuando no llega tráfico a la aplicación. Para mantener siempre una instancia en ejecución de la aplicación, establezca este valor en un valor mayor que 0. Cuando cree o actualice una aplicación con Code Engine desde la consola, establezca el número mínimo de valor de instancias en la sección Escalado automático del separador Recursos y escalado. En la CLI, especifica la opción « --min-scale » en el app create y app update comandos .

  • Número máximo de instancias-El número máximo de instancias que se pueden ejecutar para la app. El autoescalado se produce hasta este límite. Si estableces este valor en « 0 », la aplicación se escalará según sea necesario, y el escalado de la aplicación solo estará limitado por el número de instancias que permita la cuota de recursos del proyecto de tu aplicación. Consulte Límites y cuotas de Code Engine. Cuando cree o actualice una aplicación con Code Engine desde la consola, establezca el número máximo de instancias en la sección Escalado automático del separador Recursos y escalado. En la CLI, especifica la opción « --max-scale » en el app create y app update comandos . El valor predeterminado de esta opción es « 10 ».

Cuando conecte las aplicaciones a los generadores de sucesos, recuerde indicar la frecuencia y el volumen de sucesos de esos generadores cuando establezca los binarios del escalado. Por ejemplo, si se prevé recibir muchos eventos al mismo tiempo y el procesamiento de cada uno de ellos puede llevar varios minutos, es posible que se necesite un valor máximo de escala más alto que si cada evento se pudiera procesar rápidamente. Si se define un valor demasiado bajo, puede que detecte retrasos al recibir los sucesos o incluso sucesos descartados debido a los tiempos de espera producidos mientras se esperaba la liberación del proceso de recursos.

Valores de escalado automático para simultaneidad y temporización

Utiliza los siguientes parámetros de configuración para controlar el escalado de la aplicación.

  • Concurrencia: este valor indica cuántas solicitudes puede procesar cada instancia de tu aplicación al mismo tiempo. Por ejemplo, un valor de 100 significa que tu código puede gestionar 100 solicitudes simultáneas al mismo tiempo. Este valor es un "límite estricto", lo que significa que Code Engine no permite que más de un número de solicitudes (como se especifica con el valor de simultaneidad) lleguen a cualquier instancia de la aplicación. Por lo tanto, si tu código es de un solo hilo y solo puede procesar una solicitud a la vez, plantéate establecer la concurrencia en « 1 ». Cuando se envía el número especificado de solicitudes a todas las instancias en ejecución de tu aplicación, Code Engine aumenta el número de instancias para prepararse para recibir más solicitudes. Cuando cree o actualice una aplicación con Code Engine desde la consola, establezca el valor máximo de simultaneidad en la sección Escalado automático del separador Recursos y escalado. Con la CLI, especifique la opción --concurrency en los mandatos app create y app update.

  • Concurrencia objetivo: este valor actúa como un «límite flexible» o número de solicitudes por instancia que se desea en un sistema con carga. Por ejemplo, si se especifica concurrency como 100 y se especifica target concurrency como 70, entonces Code Engine intentará limitar el número de solicitudes por instancia a 70.Especificar esta opción no garantiza que el número de solicitudes por instancia no supere las 70, ya que es muy probable que esto ocurra durante un aumento del tráfico. Sin embargo, el almacenamiento intermedio comprendido entre 70 y 100 permite al sistema crear nuevas instancias para que la carga por instancia vuelva a bajar a 70 (o menos) por instancia. Si no se especifica « target concurrency », el valor por defecto es el de « concurrency ». Cuando crees o actualices una aplicación con « Code Engine » desde la consola, configura el valor de concurrencia objetivo en la sección «Autoscaling» de la pestaña « Resources & scaling ». En la CLI, especifica la opción « --concurrency-target » en el app create y app update comandos .

  • Tiempo de espera de solicitud-La cantidad de tiempo, en segundos, que la aplicación debe responder a las solicitudes, o de lo contrario fallarán. Cuando cree o actualice una aplicación con Code Engine desde la consola, establezca el valor de tiempo de espera de solicitud en la sección Escalado automático del separador Recursos y escalado. En la CLI, especifica la opción « --request-timeout » en el app create y app update comandos .

  • Retardo de reducción de escala: el tiempo, en segundos, que debe transcurrir con una concurrencia reducida antes de que la aplicación reduzca su escala. Si conoce el patrón de solicitudes entrantes a la aplicación, puede optar por especificar un valor mayor que el valor predeterminado de 0 para retrasar el escalado hacia abajo de la aplicación. Si utiliza un valor alto para esta opción, el número promedio de instancias de aplicación que se ejecutan simultáneamente puede aumentar, lo que incurre en un coste adicional. Incluso con un valor de retardo de reducción de escala de 0, el sistema espera un breve periodo de tiempo antes de que la aplicación reduzca el número de instancias para asegurarse de que un descenso en la simultaneidad de solicitudes sea lo suficientemente estable como para garantizar un descenso de escala. Al crear o actualizar una aplicación con Code Engine desde la consola, establezca el valor de retardo de escalado descendente en la sección Escalado automático del separador Recursos y escalado. En la CLI, especifica la opción « --scale-down-delay » en el app create y app update comandos .

Por ejemplo, si el valor de número máximo de instancias se establece en 10 y la simultaneidad se establece en 100, una aplicación puede procesar 1000 solicitudes simultáneas antes de que se pueda producir una posible puesta en cola de solicitudes. Si espera más de 1000 solicitudes simultáneamente, puede considerar aumentar el valor de número máximo de instancias para la app.

Para obtener más información sobre el funcionamiento de Code Engine, consulte Ajuste del retardo de escalado de IBM Cloud Code Engine para reducir los tiempos de respuesta de las aplicaciones.

Si establece el número mínimo de instancias igual al número máximo de instancias, el escalado no se produce y la moneda de destino y los valores de retardo de reducción no se aplican. Sin embargo, el valor de simultaneidad sigue en vigor.

Escenario de ejemplo para el escalado automático

Supongamos que tiene una aplicación que está configurada con los siguientes valores de escalado automático.

  • Número mínimo de instancias = 4
  • Número máximo de instancias = 20
  • Simultaneidad = 2

Con estos valores, la aplicación puede procesar 2 solicitudes simultáneas al mismo tiempo. Cuando no hay tráfico, la aplicación se escala automáticamente a 4 instancias. Las 4 instancias sólo pueden manejar 4 * 2 (moneda) = 8 solicitudes. La aplicación puede escalar hasta un máximo de 20 instancias, de modo que las 20 instancias pueden manejar 20 * 2 (moneda) = 40 solicitudes, suponiendo que haya suficientes valores de CPU y memoria para la aplicación.

Supongamos que la aplicación es una aplicación web estática que requiere 6 llamadas a la aplicación para cargar una página de inicio de sesión. Supongamos que 10 personas inician sesión en la página de inicio de sesión de la aplicación al mismo tiempo (10 * 6 = 60 llamadas). Debido a que 60 llamadas son mayores que 40 solicitudes que la aplicación puede manejar, los usuarios de la aplicación probablemente observen lentitud a medida que las llamadas se ponen en cola.

Después de aproximadamente un minuto sin tráfico en la app, Code Engine empieza a disminuir automáticamente. Cuando la aplicación se escala hacia abajo, algunas instancias se establecen en estado Terminating. Code Engine envía una señal SIGTERM a la aplicación y el código debe manejar esta señal y concluir. Si la aplicación no maneja esta señal, las instancias de la app permanecen en estado Terminating durante el tiempo configurado por el valor de tiempo de espera de solicitud (el valor predeterminado es 300 segundos). Después de la duración del tiempo de espera de solicitud, Code Engine envía una señal SIGKILL para forzar la detención de las instancias de aplicación en estado Terminating.

Si tiene 8 instancias activas y 12 instancias permanecen en estado Terminating durante 300 segundos (5 minutos). Estas 12 instancias no reciben ninguna solicitud. Si entran más de 8 * 2 (currency) = 16 solicitudes, Code Engine escala las nuevas instancias.

En este ejemplo, el valor de simultaneidad de 2 es bajo para este contenido estático. Debe determinar los valores de escalado automático que se deben establecer para la app, que depende de lo que la implementación de la app pueda manejar con sus recursos de CPU y memoria asignados.

Optimización de la latencia y del rendimiento

Para optimizar la latencia y el rendimiento de la aplicación, debe entender los pros y los contras de algunos modelos comunes y las prácticas recomendadas para configurar la simultaneidad del contenedor.

Utiliza la configuración de concurrencia para especificar el número máximo de solicitudes que se pueden procesar simultáneamente por instancia al crear o actualizar una aplicación. En la consola de Code Engine, establezca el valor de simultaneidad en la sección Tiempo de ejecución. Con la CLI, utilice la opción --concurrency (alias --cn) con el mandato app create o app update.

Simultaneidad de ejemplos en aplicaciones Code Engine
Modelo Pros Cons
Simultaneidad única, --cn=1 Elija la configuración de simultaneidad única cuando la aplicación sirva una carga de trabajo con gran consumo de memoria o de CPU porque solo entra una solicitud en la instancia de aplicación a la vez y, por lo tanto, obtiene la cantidad total de CPU y memoria configurada para la instancia. Las aplicaciones que utilizan el modelo de simultaneidad única se escalan horizontalmente de forma rápida. El escalado horizontal puede suponer latencia adicional y un rendimiento inferior, porque es más caro crear una nueva instancia de aplicación que volver a utilizar una existente. No elija este modelo si las solicitudes se pueden procesar simultáneamente y la latencia es un aspecto importante a tener en cuenta para la aplicación.
Alta simultaneidad, --cn=100 (valor predeterminado) o superior Elija esta configuración si la aplicación sirve un gran volumen de cargas de trabajo de solicitud o de respuesta HTTP que no utilizan gran cantidad de CPU de memoria y pueden esperar a que haya recursos disponibles. Podrías optar por esta configuración de concurrencia para un back-end de API que lee y escribe datos en operaciones de creación, recuperación, actualización y eliminación en una base de datos remota. Mientras algunas solicitudes esperan E/S, otras solicitudes se pueden procesar sin que ello afecte a la latencia general ni al rendimiento. Este valor no resulta óptimo cuando solicitudes simultáneas compiten por CPU, memoria o E/S porque la competencia por recursos puede retrasar la ejecución y afectar negativamente a la latencia y al rendimiento.
Simultaneidad óptima, --cn=N Elija la configuración de simultaneidad óptima si sabe la cantidad de recursos necesarios para que una sola solicitud cumpla el tiempo de respuesta que desea para la aplicación. Podrías optar por esta configuración si tu aplicación es una aplicación de traducción de lenguaje natural, en la que el modelo de aprendizaje automático para la conversión de idiomas ocupa 32 GB, y cada cálculo de traducción requiere aproximadamente 0.7 vCPU por solicitud. Puede elegir una configuración de 9 vCPU y 32 GB de memoria por instancia. La simultaneidad de contenedor óptima es aproximadamente 13 (9 vCPU/0.7 vCPU). No elija la configuración de simultaneidad óptima si no conoce los requisitos de recursos para la aplicación. Si se define una simultaneidad de contenedor errónea, se puede producir un escalado demasiado agresivo o demasiado lento, lo que puede afectar a la latencia, a la tasa de error y a los costes de la aplicación. Para obtener más información, consulte Determinación de la simultaneidad para el contenedor de aplicaciones.
Simultaneidad infinita, --cn=0 (inhabilitado) Inhabilitado La configuración de simultaneidad infinita no recibe soporte en Code Engine. La configuración de simultaneidad infinita reenvía tantas solicitudes como sea posible a una sola instancia de aplicación, lo que puede retrasar el escalado de instancias de aplicación adicionales.

Determinación de la simultaneidad del contenedor de aplicaciones

El valor de simultaneidad de contenedor óptimo viene determinado por el número máximo de solicitudes simultáneas que la aplicación puede manejar con una latencia de solicitud aceptable.

La simultaneidad de contenedor tiene un impacto directo en la tasa de éxito, en la latencia y en el rendimiento de la aplicación. Cuando el valor de concurrencia del contenedor es demasiado alto para que la aplicación pueda gestionarlo, la latencia y el rendimiento se ven afectados negativamente, y es posible que aparezcan respuestas de error del tipo « 502 » y « 503 ».

Cuando el valor de simultaneidad de contenedor es demasiado bajo para la aplicación, el sistema escala la aplicación más rápidamente y distribuye la solicitud en varias instancias de aplicación, lo que supone costes y latencia adicionales. Durante una ráfaga de carga, un valor de simultaneidad baja también puede dar lugar a respuestas temporales de 502 cuando se ejecutan los almacenamientos intermedios internos del sistema.

Para determinar la configuración de simultaneidad de contenedor para la aplicación, examine las solicitudes y la latencia.

  1. Cree una aplicación y establezca su simultaneidad en 1000 (máx.), y min-scale y max-scale en 1.

    ibmcloud ce application create --name APPNAME --image APPIMAGE --min-scale=1 --max-scale=1 --concurrency=1000
    
  2. Empiece por enviar una alta tasa de solicitudes. Si se producen errores 502, reduzca la tasa hasta que el resultado muestre una tasa de éxito del 100%.

  3. Puede encontrar la latencia de solicitudes de la salida del paso 2. Si la latencia de solicitudes no es aceptable, disminuya aún más la tasa de solicitudes hasta que la latencia de la solicitudes sea aceptable. Tenga en cuenta que la duración de la solicitud también es importante, ya que hay una gran diferencia entre que el cálculo de la solicitud tarde 2 y que tarde 100 milisegundos.

    La tasa de solicitudes y la latencia aceptables varían de acuerdo con las características de la aplicación y la configuración de escalado. Por ejemplo, si el cálculo dentro de la aplicación tarda alrededor de 100 ms y el valor de simultaneidad es 10, una instancia de aplicación puede procesar alrededor de 100 solicitudes por segundo con una latencia de aproximadamente 100 ms (ignorando la latencia de red).

  4. Para calcular el valor de simultaneidad de contenedor para la aplicación, tome la tasa del paso 2 (en req/s) y divídala por la latencia del paso 3 (en segundos): CC = RATE/LATENCY. Por ejemplo, si la tasa es de 80 solicitudes por segundo y la latencia es de 2 segundos, la simultaneidad resultante es simultaneidad = 80 req/s / 2 s = 40.

  5. Actualice la aplicación para establecer la simultaneidad del contenedor en el valor que ha encontrado en el paso anterior y vuelva a ejecutar la carga de trabajo para comprobar si la tasa de éxito y la latencia son aceptables.

  6. Experimente con la aplicación aumentando el valor de simultaneidad del contenedor y observando la tasa de éxito y la latencia.

  7. Actualice la aplicación con el valor de simultaneidad de contenedor óptimo y elimine los límites de min-Scale y max-scale para permitir que la aplicación se escale automáticamente.

Observación de cómo se escala la app con la CLI

Puede observar el número de instancias en ejecución de la app con la CLI.

  1. Cree una aplicación con el mandato app create.

    ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld
    
  2. Llame a la aplicación. Puede obtener el URL de la app de la salida del mandato app create o puede ejecutar ibmcloud ce app get --name myapp --output url.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  3. Ejecute el mandato application get para ver el estado de la aplicación. Busque el valor de Running instances. En este ejemplo, la app tiene 1 instancia en ejecución. Por ejemplo:

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    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
    

    Espere unos minutos, ya que la app puede tardar unos minutos en reducir sus instancias a cero.

  4. Vuelva a ejecutar el mandato application get y observe que el valor de Running instances se ha reducido a cero. Cuando la aplicación maneja menos solicitudes que su simultaneidad de destino configurada, la aplicación escala el número de instancias en ejecución hasta el número mínimo configurado de instancias. En este escenario, el número de instancias en ejecución se escala automáticamente a cero. Cuando la opción --min-scale se establece en 0 (valor predeterminado), el número de instancias en ejecución se escala automáticamente a cero.

    Espere unos minutos, ya que la app puede tardar unos minutos en reducir sus instancias a cero.

    ibmcloud ce application get -n myapp
    

    Salida de ejemplo

    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. Vuelva a llamar a la aplicación para aumentar el número de instancias.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  6. Vuelva a ejecutar el mandato application get y observe que el valor de Running instances ha aumentado con respecto a cero. Por ejemplo:

    ibmcloud ce application get -n myapp
    

    Salida de ejemplo

    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
    

Establecimiento del número de instancias mínimas y máximas para la app

Puede cambiar el número de instancias en ejecución de la app actualizando el valor mínimo y máximo para el número de instancias de la app.

El valor predeterminado para el número mínimo de instancias para la aplicación es 0. Si la app no recibe ningún tráfico, se escala a 0 y no se ejecuta ninguna instancia de la app. En esta situación, la aplicación puede ser más lenta para responder cuando recibe de nuevo el tráfico, mientras se vuelve a escalar. Puedes modificar este comportamiento actualizando tu aplicación y estableciendo la escala mínima en 1, ya sea desde la consola o mediante la CLI.

El valor predeterminado para el número máximo de instancias de tu aplicación es 10. Para obtener más información, consulte Escalado de límites.

Cambio del rango de escalado automático desde la consola

Para cambiar el rango dentro del cual Code Engine escala automáticamente el número de instancias en ejecución para una app desde la consola, siga estos pasos.

  1. Vaya a la app.
  2. Selecciona la pestaña « Configuración ».
  3. Selecciona la pestaña « Recursos y escalabilidad ».
  4. Establezca el número de instancias mínimas y máximas para la app.
  5. (Opcional) Revise y establezca los valores de simultaneidad y temporización de la solicitud para el escalado automático de la app.
  6. Haz clic en «Implementar» para guardar los cambios e implementar la revisión de la aplicación.

Cuando actualiza la aplicación, la app crea una nueva revisión y direcciona el tráfico a esa instancia.

Cambio del rango de escalado automático con la CLI

Para cambiar el rango dentro del cual Code Engine escala automáticamente el número de instancias en ejecución para una app con la CLI, ejecute el mandato application update con las opciones --min-scale y --max-scale establecidas en el número de instancias que desea para la app. Opcionalmente, puede establecer los valores de simultaneidad y temporización de solicitud para la aplicación. Estas opciones incluyen --concurrency, --concurrency-target, --request-timeout y --scale-down-delay. Para obtener más información sobre cómo establecer estos valores de escalado automático, consulte Límites de escalado y Valores de escalado automático para simultaneidad y temporización.

Cuando actualiza la aplicación, la app crea una nueva revisión y direcciona el tráfico a esa instancia.