escalado de la función de Lambda - AWS Lambda

escalado de la función de 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 cuota de simultaneidad regional predeterminada comienza en 1000 instancias. Para obtener más información o solicitar un aumento de esta cuota consulte Cuotas de Lambda. Para asignar capacidad por función, puede configurar las funciones con simultaneidad reservada.

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. Tenga en cuenta que la cuota de ráfaga de simultaneidad no es por función, sino que se aplica a todas las funciones de la región.

Cuotas de simultaneidad de ráfagas

  • 3000 – EE. UU. Oeste (Oregón), EE. UU. Este (Norte de Virginia), Europa (Irlanda)

  • 1000 – Asia Pacífico (Tokio), Europa (Frankfurt), 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.

Legend

  • 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.

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.

Legend

  • Instancias de función

  • Solicitudes abiertas

  • Simultaneidad aprovisionada

  • Simultanidad estándar

Cuando configura un número para la simultaneidad aprovisionada, Lambda inicializa ese número de entornos de ejecución. Su función está lista para entregar una ráfaga de solicitudes entrantes con una latencia muy baja. Tenga en cuenta que la configuración de la simultaneidad aprovisionada genera cargos en su cuenta de AWS.

Cuando se está utilizando toda la simultaneidad aprovisionada, la función se amplía normalmente para gestionar cualquier solicitud adicional.

Application Auto Scaling lleva esto un paso más allá al proporcionar escalado automático para la simultaneidad aprovisionada. Con Application Auto Scaling, puede crear una política de escalado 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 Application Auto Scaling para registrar un alias como destino escalable y crear una política de escalado.

En el ejemplo siguiente, una función escala entre una cantidad mínima y máxima de concurrencia aprovisionada basada en la utilización. Cuando aumenta el número de solicitudes abiertas, Application Auto Scaling aumenta la simultaneidad aprovisionada en grandes pasos hasta que alcanza el máximo configurado. La función continúa escalando en la concurrencia estándar hasta que la utilización comience a disminuir. Cuando la utilización es constantemente baja, Application Auto Scaling disminuye la concurrencia aprovisionada en pasos periódicos más pequeños.


      Simultaneidad aprovisionada de escalado automático con seguimiento de destino de Application Auto Scaling.

Legend

  • 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 Uso de métricas de funciones de Lambda.