Escalado de funciones de AWS Lambda - AWS Lambda

Escalado de funciones de AWS Lambda

La primera vez que invoque la función, AWS Lambda crea una instancia de la función y ejecuta su método del controlador para procesar el evento. Cuando la función devuelve una respuesta, permanece activa y espera para procesar eventos adicionales. Si vuelve a invocar la función mientras se procesa el primer evento, Lambda inicializa otra instancia y la función procesa los dos eventos simultáneamente. Conforme entran más eventos, Lambda los dirige a instancias disponibles y crea nuevas instancias según sea necesario. Cuando el número de solicitudes disminuye, Lambda detiene las instancias no utilizadas para liberar capacidad de escalado para otras funciones.

La simultaneidad de las funciones es el número de instancias que atienden solicitudes en un momento dado. En una ráfaga inicial de tráfico, la simultaneidad total de la función en una Región puede alcanzar un nivel inicial de entre 500 y 3000, que varía por región.

Cuotas de simultaneidad de ráfagas

  • 3000: EE.UU. Oeste (Oregón), US East (N. Virginia), Europa (Irlanda).

  • 1000: Asia Pacífico (Tokio), Europa (Fráncfort), EE.UU. Este (Ohio)

  • 500: Otras regiones

Después de la ráfaga inicial, la simultaneidad de la función puede escalarse en 500 instancias adicionales cada minuto. Esto continúa hasta que haya suficientes instancias para servir a todas las solicitudes o hasta que se alcance un límite de simultaneidad. Cuando llegan las solicitudes más rápidamente de lo que la función puede escalar o cuando la función está en simultaneidad máxima, las solicitudes adicionales fallan con un error de limitación (código de estado 429).

El siguiente ejemplo muestra una función que procesa un pico de tráfico. A medida que las invocaciones aumentan exponencialmente, la función se escala hacia arriba. Inicializa una nueva instancia para cualquier solicitud que no se pueda enrutar a una instancia disponible. Cuando se alcanza el límite de ráfaga de simultaneidad, la función comienza a escalar linealmente. Si no es suficiente simultaneidad para atender todas las solicitudes, las solicitudes adicionales se limitarán y se deben volver a intentar.


      Una vez alcanzado el límite de ráfaga, la simultaneidad escala linealmente. Las solicitudes adicionales se limitan.

Leyenda

  • Instancias de función

  • Solicitudes abiertas

  • Posibles limitaciones

La función continúa escalando hasta que se alcanza el límite de simultaneidad de la cuenta para la Región de la función. La función alcanza la demanda, las solicitudes disminuyen y las instancias no utilizadas de la función se detienen después de estar inactivas durante algún tiempo. Las instancias no utilizadas se congelan mientras esperan solicitudes y no generan cargos.

El límite de concurrencia regional comienza en 1,000. Puede aumentar el límite enviando una solicitud en la consola del Centro de soporte técnico. Para asignar capacidad por función, puede configurar las funciones con simultaneidad reservada. La simultaneidad reservada crea un grupo que solo su función puede utilizar y también evita que su función use simultaneidad sin reservas.

Cuando su función escala hacia arriba, la primera solicitud atendida por cada instancia se ve afectada por el tiempo que tarda en cargar e inicializar su código. Si el código de inicialización tarda mucho tiempo, el impacto en la latencia media y percentil puede ser significativo. Para que su función pueda escalar sin fluctuaciones en la latencia, utilice la simultaneidad aprovisionada. En el ejemplo siguiente se muestra una función con simultaneidad aprovisionada que procesa un pico de tráfico.


      Escalado con simultaneidad aprovisionada.

Leyenda

  • Instancias de función

  • Solicitudes abiertas

  • Simultaneidad aprovisionada

  • Simultaneidad estándar

Cuando asigna simultaneidad aprovisionada, su función está lista para servir una ráfaga de solicitudes entrantes con una latencia muy baja. Cuando se está utilizando toda la simultaneidad aprovisionada, la función se amplía normalmente para gestionar cualquier solicitud adicional.

Auto Scaling de aplicaciones lleva esto un paso más allá al proporcionar escalado automático para la simultaneidad aprovisionada. Con Auto Scaling de aplicaciones, puede crear una política de escala de seguimiento de destino que ajuste automáticamente los niveles de simultaneidad aprovisionados, en función de la métrica de utilización que Lambda emita. Utilice la API de Auto Scaling de aplicaciones para registrar un alias como destino escalable y crear una política de escalado.

En el siguiente ejemplo, una función escala entre cantidades mínimas y máximas de simultaneidad aprovisionada basada en su uso. Cuando el número de solicitudes abiertas aumenta, Auto Scaling de aplicaciones aumenta la simultaneidad aprovisionada a pasos grandes hasta que llega al máximo configurado. La función sigue escalando en simultaneidad estándar hasta que su uso comienza a disminuir. Cuando el uso es consistentemente bajo, Auto Scaling de aplicaciones reduce la simultaneidad aprovisionada en pasos periódicos más pequeños.


      Simultaneidad aprovisionada autoescalada con seguimiento de destino de Auto Scaling de aplicaciones.

Leyenda

  • Instancias de función

  • Solicitudes abiertas

  • Simultaneidad aprovisionada

  • Simultaneidad estándar

Al invocar la función de forma asíncrona mediante un mapeo de origen de eventos u otro servicio de AWS, el comportamiento de escalado varía. Por ejemplo, los mapeos de orígenes de eventos que leen a partir de una transmisión están limitados por la cantidad de fragmentos de la transmisión. La capacidad de ampliación que no está utilizada por un origen de eventos está disponible para su uso por parte de otros clientes y orígenes de eventos. Para obtener más información, consulte los siguientes temas.

Puede monitorizar los niveles de simultaneidad de su cuenta mediante las métricas siguientes:

Métricas de simultaneidad

  • ConcurrentExecutions

  • UnreservedConcurrentExecutions

  • ProvisionedConcurrentExecutions

  • ProvisionedConcurrencyInvocations

  • ProvisionedConcurrencySpilloverInvocations

  • ProvisionedConcurrencyUtilization

Para obtener más información, consulte Trabajar con métricas de funciones de AWS Lambda.