

# Monitoreo de la simultaneidad
<a name="monitoring-concurrency"></a>

Lambda emite métricas de Amazon CloudWatch para ayudarlo a monitorear la simultaneidad de sus funciones. En este tema, se explican estas métricas y cómo interpretarlas.

**Topics**
+ [Métricas generales de simultaneidad](#general-concurrency-metrics)
+ [Métricas de simultaneidad aprovisionada](#provisioned-concurrency-metrics)
+ [Cómo trabajar con la métrica `ClaimedAccountConcurrency`](#claimed-account-concurrency)

## Métricas generales de simultaneidad
<a name="general-concurrency-metrics"></a>

Utilice estas métricas para monitorear la simultaneidad de las funciones de Lambda. La granularidad de cada métrica es de 1 minuto.
+ `ConcurrentExecutions`: la cantidad de invocaciones simultáneas activas en un momento determinado. Lambda emite esta métrica para todas las funciones, alias y versiones. Para cualquier función de la consola de Lambda, se muestra el gráfico sobre `ConcurrentExecutions` de forma nativa en la pestaña **Monitoreo**, en **Métricas**. Visualice esta métrica mediante **MAX**.
+ `UnreservedConcurrentExecutions`: la cantidad de invocaciones simultáneas activas que utilizan la simultaneidad no reservada. Lambda emite esta métrica en todas las funciones de una región. Visualice esta métrica mediante **MAX**.
+ `ClaimedAccountConcurrency`: la cantidad de simultaneidad que no está disponible para las invocaciones bajo demanda. `ClaimedAccountConcurrency` es igual a `UnreservedConcurrentExecutions` más la cantidad de simultaneidad asignada (es decir, la simultaneidad reservada total más la simultaneidad aprovisionada total). Si `ClaimedAccountConcurrency` supera el límite de simultaneidad de su cuenta, puede [solicitar un límite de simultaneidad de cuentas superior](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-concurrency-limit-increase/). Visualice esta métrica mediante **MAX**. Para obtener más información, consulte [Cómo trabajar con la métrica `ClaimedAccountConcurrency`](#claimed-account-concurrency).

## Métricas de simultaneidad aprovisionada
<a name="provisioned-concurrency-metrics"></a>

Utilice las siguientes métricas para monitorear las funciones de Lambda mediante la simultaneidad aprovisionada. La granularidad de cada métrica es de 1 minuto.
+ `ProvisionedConcurrentExecutions`: la cantidad de instancias de entorno de ejecución que están procesando de forma activa una invocación con simultaneidad aprovisionada. Lambda emite esta métrica para cada versión y alias de función con la simultaneidad aprovisionada configurada. Visualice esta métrica mediante **MAX**.

`ProvisionedConcurrentExecutions` no es lo mismo que el número total de simultaneidad aprovisionada que usted asigna. Por ejemplo, supongamos que asigna 100 unidades de simultaneidad aprovisionadas a una versión de la función. Durante un minuto dado, si al menos 50 de esos 100 entornos de ejecución gestionaban invocaciones en simultáneo, el valor de **MAX** (`ProvisionedConcurrentExecutions`) es 50.
+ `ProvisionedConcurrencyInvocations`: es la cantidad de veces que Lambda invoca el código de la función mediante la simultaneidad aprovisionada. Lambda emite esta métrica para cada versión y alias de función con la simultaneidad aprovisionada configurada. Visualice esta métrica mediante **SUM**.

`ProvisionedConcurrencyInvocations` difiere de `ProvisionedConcurrentExecutions` en que `ProvisionedConcurrencyInvocations` cuenta el número total de invocaciones, mientras que `ProvisionedConcurrentExecutions` cuenta el número de entornos activos. Para entender esta distinción, considere el siguiente escenario:

![\[\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/concurrency-metrics-pc-executions-vs-invocations.png)


En este ejemplo, suponga que recibe 1 invocación por minuto y que cada invocación tarda 2 minutos en completarse. Cada barra horizontal naranja representa una única solicitud. Supongamos que asigna 10 unidades de simultaneidad aprovisionadas a esta función, de modo que cada solicitud se ejecute con simultaneidad aprovisionada.

Entre los minutos 0 y 1, entra `Request 1`. **En el minuto 1**, el valor de **MAX** (`ProvisionedConcurrentExecutions`) es 1, ya que, como máximo, 1 entorno de ejecución estuvo activo durante el último minuto. El valor de **SUM** (`ProvisionedConcurrencyInvocations`) también es 1, ya que se recibió 1 solicitud nueva en el último minuto.

Entre los minutos 1 y 2, entra la `Request 2` y la `Request 1` continúa ejecutándose. **En el minuto 2**, el valor de **MAX** (`ProvisionedConcurrentExecutions`) es 2, ya que durante el último minuto estuvieron activos como máximo 2 entornos de ejecución. Sin embargo, el valor de **SUM** (`ProvisionedConcurrencyInvocations`) es 1, ya que solo se recibió 1 solicitud nueva en el último minuto. Este comportamiento de la métrica continúa hasta el final del ejemplo.
+ `ProvisionedConcurrencySpilloverInvocations`: es la cantidad de veces que Lambda invoca la función en simultaneidad estándar (reservada o no reservada) cuando toda la simultaneidad aprovisionada está en uso. Lambda emite esta métrica para cada versión y alias de función con la simultaneidad aprovisionada configurada. Visualice esta métrica mediante **SUM**. El valor de `ProvisionedConcurrencyInvocations` \$1 `ProvisionedConcurrencySpilloverInvocations` debe ser igual al número total de invocaciones de funciones (es decir, la métrica `Invocations`).

  `ProvisionedConcurrencyUtilization`: el porcentaje de simultaneidad aprovisionada en uso (por ejemplo, el valor de `ProvisionedConcurrentExecutions` dividido por la cantidad total de simultaneidad aprovisionada asignada). Lambda emite esta métrica para cada versión y alias de función con la simultaneidad aprovisionada configurada. Visualice esta métrica mediante **MAX**.

Por ejemplo, supongamos que aprovisiona 100 unidades de simultaneidad aprovisionadas a una versión de la función. Durante un minuto dado, si como máximo 60 de esos 100 entornos de ejecución gestionaban invocaciones de forma simultánea, el valor de **MAX** (`ProvisionedConcurrentExecutions`) es 60 y el valor de **MAX** (`ProvisionedConcurrencyUtilization`) es 0,6.

Un valor alto para `ProvisionedConcurrencySpilloverInvocations` puede indicar que necesita asignar una simultaneidad aprovisionada adicional para su función. Como alternativa, puede [configurar el Auto Scaling de aplicaciones para gestionar el escalado automático de la simultaneidad aprovisionada](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html#managing-provisioned-concurency) en función de umbrales predefinidos.

Por el contrario, los valores consistentemente bajos de `ProvisionedConcurrencyUtilization` pueden indicar que ha asignado en exceso la simultaneidad aprovisionada para su función.

## Cómo trabajar con la métrica `ClaimedAccountConcurrency`
<a name="claimed-account-concurrency"></a>

Lambda utiliza la métrica `ClaimedAccountConcurrency` para determinar la cantidad de simultaneidad disponible de su cuenta para las invocaciones bajo demanda. Lambda calcula `ClaimedAccountConcurrency` mediante la siguiente fórmula:

```
ClaimedAccountConcurrency = UnreservedConcurrentExecutions + (allocated concurrency)
```

`UnreservedConcurrentExecutions` es la cantidad de invocaciones simultáneas activas que utilizan la simultaneidad no reservada. La simultaneidad asignada es la suma de las siguientes dos partes (`RC` se sustituye por “simultaneidad reservada” y `PC` por “simultaneidad aprovisionada”):
+ El `RC` total de todas las funciones de una Región.
+ El `PC` total de todas las funciones de una Región que utilizan `PC`, excepto las funciones que utilizan `RC`.

**nota**  
No puede asignar más `PC` que `RC` para una función. Por lo tanto, la `RC` de una función siempre es mayor o igual que su `PC`. Para calcular la contribución a la simultaneidad asignada para dichas funciones con `PC` y `RC`, Lambda solo tiene en cuenta `RC`, que es la más alta de las dos.

Lambda utiliza la métrica `ClaimedAccountConcurrency`, en lugar de `ConcurrentExecutions`, para determinar la cantidad de simultaneidad disponible para las invocaciones bajo demanda. Si bien la métrica `ConcurrentExecutions` es útil para realizar un seguimiento del número de invocaciones simultáneas activas, no siempre refleja su verdadera disponibilidad simultánea. Esto se debe a que Lambda también considera la simultaneidad reservada y la simultaneidad aprovisionada para determinar la disponibilidad.

Para ejemplificar `ClaimedAccountConcurrency`, imagine un escenario en el que configura una gran cantidad de simultaneidad reservada y aprovisionada en todas las funciones que prácticamente no se utilizan. En el siguiente ejemplo, supongamos que el límite de simultaneidad de su cuenta es 1000 y que tiene dos funciones principales en su cuenta: `function-orange` y `function-blue`. Asigna 600 unidades de simultaneidad reservada a `function-orange`. Asigna 200 unidades de simultaneidad aprovisionada a `function-blue`. Supongamos que, con el transcurso del tiempo, implementa funciones adicionales y observa el siguiente patrón de tráfico:

![\[\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/claimed-account-concurrency.png)


En el diagrama anterior, las líneas negras indican el uso real de la simultaneidad a lo largo del tiempo y la línea roja indica el valor de `ClaimedAccountConcurrency` a lo largo del tiempo. En este escenario, `ClaimedAccountConcurrency` es 800 como mínimo, a pesar del bajo uso real de la simultaneidad en todas las funciones. Esto se debe a que asignó 800 unidades totales de simultaneidad para `function-orange` y `function-blue`. Desde el punto de vista de Lambda, usted “reclamó” esta simultaneidad para utilizarla, por lo que, efectivamente, solo le quedan 200 unidades de simultaneidad para otras funciones.

En este escenario, la simultaneidad asignada es 800 en la fórmula `ClaimedAccountConcurrency`. A continuación, podemos derivar el valor de `ClaimedAccountConcurrency` en varios puntos del diagrama:
+ En `t1`, `ClaimedAccountConcurrency` es 800 (800 \$1 0 `UnreservedConcurrentExecutions`).
+ En `t2`, `ClaimedAccountConcurrency` es 900 (800 \$1 100 `UnreservedConcurrentExecutions`).
+ En `t3`, `ClaimedAccountConcurrency` es nuevamente 900 (800 \$1 100`UnreservedConcurrentExecutions`).

### Configuración de la métrica `ClaimedAccountConcurrency` en CloudWatch
<a name="claimed-account-concurrency-example"></a>

Lambda emite la métrica `ClaimedAccountConcurrency` en CloudWatch. Utilice esta métrica junto con el valor de `SERVICE_QUOTA(ConcurrentExecutions)` para obtener el porcentaje de utilización de la simultaneidad en su cuenta, como se muestra en la siguiente fórmula:

```
Utilization = (ClaimedAccountConcurrency/SERVICE_QUOTA(ConcurrentExecutions)) * 100%
```

La siguiente captura de pantalla muestra cómo se puede graficar esta fórmula en CloudWatch. La línea verde `claim_utilization` representa la utilización simultánea de esta cuenta, que es alrededor de 40 %:

![\[\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/claimed-account-concurrency-cloudwatch-graph.png)


La captura de pantalla anterior también incluye una alarma de CloudWatch que pasa a estado `ALARM` cuando la utilización de la simultaneidad supera el 70 %. Puede utilizar la métrica `ClaimedAccountConcurrency` junto con alarmas similares para determinar de forma proactiva cuándo podría ser necesario solicitar un límite de simultaneidad de cuentas superior.