Escalado de instancias administradas de Lambda
Las instancias administradas de Lambda no se escalan cuando llegan las invocaciones y no admiten arranques en frío. En su lugar, escala de forma asíncrona mediante señales de consumo de recursos. Las instancias administradas actualmente se escalan en función del uso de los recursos de la CPU y de la saturación de la concurrencia múltiple.
Diferencias clave:
-
Lambda (predeterminado): escala cuando no hay un entorno de ejecución libre para gestionar una invocación entrante (arranque en frío).
-
Instancias administradas de Lambda: se escalan de forma asíncrona en función del uso de los recursos de la CPU y de la saturación de concurrencia múltiple de los entornos de ejecución.
Si el tráfico más que se duplica en 5 minutos, es posible que experimente limitaciones a medida que Lambda escala verticalmente las instancias y los entornos de ejecución para satisfacer la demanda.
El ciclo de vida del escalado
Las instancias administradas de Lambda utilizan una arquitectura distribuida para administrar el escalado:
Componentes:
-
Instancias administradas: se ejecutan en su cuenta, en las subredes que proporcione.
-
Enrutador y escalador: componentes Lambda compartidos que enrutan las invocaciones y administran el escalado.
-
Agente de Lambda: se ejecuta en cada instancia administrada para administrar el ciclo de vida del entorno de ejecución y supervisar el consumo de recursos.
Funcionamiento:
-
Cuando publica una versión de la función con un proveedor de capacidad, Lambda lanza las instancias administradas en su cuenta. Lanza tres de forma predeterminada para garantizar la resiliencia de la zona de disponibilidad e inicia tres entornos de ejecución antes de marcar la versión de la función como ACTIVA.
-
Cada instancia administrada puede ejecutar entornos de ejecución para varias funciones asignadas al mismo proveedor de capacidad.
-
A medida que el tráfico fluye hacia su aplicación, los entornos de ejecución consumen recursos. El agente de Lambda notifica al escalador, que decide si escalar nuevos entornos de ejecución o instancias administradas.
-
Si el enrutador intenta enviar una invocación a un entorno de ejecución con un alto consumo de recursos, el agente de Lambda de esa instancia le notifica que reintente en otra.
-
A medida que disminuye el tráfico, el agente de Lambda notifica al escalador, que toma la decisión de reducir verticalmente los entornos de ejecución y reducir horizontalmente las instancias administradas.
Ajuste del comportamiento de escalado
Puede personalizar el comportamiento de escalado de las instancias administradas mediante cuatro controles:
Controles de nivel de función
1. Memoria y vCPU de la función
Elija el tamaño de la memoria y la asignación de vCPU para su función. El tamaño de función más pequeño admitido es de 2 GB y 1 vCPU.
Consideraciones:
-
Elija una configuración de memoria y vCPU que admita ejecuciones simultáneas múltiples de su función.
-
No puede configurar una función con menos de 1 vCPU porque las funciones que se ejecutan en instancias administradas deben admitir varias cargas de trabajo simultáneas.
-
No puede elegir menos de 2 GB porque esto coincide con la proporción de memoria con respecto a la vCPU de 2 a 1 de las instancias c, que tienen la proporción más baja.
-
Para las aplicaciones de Python, es posible que deba elegir una proporción más alta de memoria con respecto a las vCPU, por ejemplo, 4 a 1 u 8 a 1, debido a la forma en que Python gestiona la concurrencia múltiple.
-
Si ejecuta operaciones con un uso intensivo de la CPU o realiza poca E/S, debe elegir más de una vCPU.
2. Simultaneidad máxima
Establezca la concurrencia máxima por entorno de ejecución.
Comportamiento predeterminado: Lambda elija valores predeterminados razonables que equilibran el consumo de recursos y el rendimiento y que funcionan para una amplia variedad de aplicaciones.
Pautas de ajuste:
-
Aumente la concurrencia: si las invocaciones de sus funciones utilizan muy poca CPU, puede aumentar la concurrencia máxima hasta un máximo de 64 por vCPU.
-
Reduzca la concurrencia: si su aplicación consume una gran cantidad de memoria y muy poca CPU, puede reducir la concurrencia máxima.
Importante: Dado que las instancias administradas de Lambda están diseñadas para aplicaciones simultáneas múltiples, los entornos de ejecución con una concurrencia muy baja pueden experimentar limitaciones en el momento del escalado.
Controles de nivel de los proveedores de capacidad
3. Utilización de recursos de destino
Elija su propio objetivo de consumo de uso de la CPU.
Comportamiento predeterminado: Lambda mantiene suficiente margen de maniobra para que el tráfico se duplique en 5 minutos sin limitaciones.
Opciones de optimización:
-
Si su carga de trabajo es muy estable o si su aplicación no es sensible a las limitaciones, puede configurar el objetivo en un nivel alto para lograr una mayor utilización y reducir los costos.
-
Si desea mantener el margen para las ampliaciones de tráfico, puede establecer los objetivos de recursos en un nivel bajo, lo que requerirá más capacidad.
4. Selección del tipo de instancia
Configure los tipos de instancias permitidos o excluidos.
Comportamiento predeterminado: Lambda elige los mejores tipos de instancias para su carga de trabajo. Le recomendamos que deje que las instancias administradas de Lambda elijan los tipos de instancia por usted, ya que restringir la cantidad de tipos de instancias posibles puede reducir la disponibilidad.
Configuración personalizada:
-
Requisitos de hardware específicos: defina los tipos de instancias permitidos en una lista de instancias compatibles. Por ejemplo, si tiene una aplicación que requiere un ancho de banda de la red elevado, puede seleccionar varios tipos de instancias n.
-
Optimización de costos: para los entornos de pruebas o desarrollo, podría elegir tipos de instancias más pequeñas, como los tipos de instancia m7a.large.
Siguientes pasos
-
Obtenga información sobre los proveedores de capacidad para las instancias administradas de Lambda.
-
Revise las guías específicas del tiempo de ejecución para gestionar la concurrencia múltiple.
-
Configure la conectividad de VPC para sus proveedores de capacidad.
-
Supervise las métricas de escalado para optimizar el comportamiento de escalado.