

# 2- Se ha superado el rendimiento aprovisionado
<a name="throttling-provisioned-capacity-exceeded-mitigation"></a>

La limitación de la capacidad aprovisionada se produce cuando la tasa de consumo de la aplicación supera las unidades de capacidad de lectura o escritura (RCU/WCU) configuradas para las tablas o los índices secundarios globales. Aunque DynamoDB proporciona una capacidad de ampliación para gestionar picos de tráfico ocasionales, las solicitudes continuas que superan los límites aprovisionados provocan una limitación. Cuando esto ocurre, DynamoDB devuelve un tipo de motivo de limitación `ProvisionedThroughputExceeded` en la excepción de limitación. El motivo identifica si el problema está relacionado con las operaciones de lectura o escritura y si afecta a la tabla base o a un índice secundario global. 

La limitación se puede producir independientemente de si el escalado automático está activado. El escalado automático se adapta a los aumentos de consumo, pero no responde al instante y está limitado por los límites de capacidad máxima que configure. Esto significa que aún se pueden producir limitaciones durante picos de tráfico repentinos o cuando el consumo supera los límites máximos de escalado automático.

## El rendimiento aprovisionado ha superado las medidas de mitigación
<a name="throttling-provisioned-throughput-exceeded"></a>

Esta sección proporciona una guía para la resolución de situaciones de limitación de capacidad aprovisionada. Antes de usar esta guía, asegúrese de haber identificado el motivo específico de la limitación a partir del manejo de excepciones de la aplicación y de haber determinado el nombre de recurso de Amazon (ARN) del recurso afectado. Para obtener información sobre cómo recuperar los motivos de la limitación e identificar los recursos limitados, consulte [Marco de diagnóstico de limitación de DynamoDB](throttling-diagnosing-workflow.md#throttling-diagnosing).

Antes de sumergirse en escenarios de limitación específicos, primero considere si la limitación es realmente un problema que necesita solución:
+ En aplicaciones de DynamoDB bien optimizadas, es normal y se espera que se produzcan limitaciones ocasionales. La limitación simplemente significa que está consumiendo el 100 % de lo que ha aprovisionado. Si la aplicación gestiona la limitación sin problemas con los reintentos y el rendimiento general cumple con los requisitos, es posible que la limitación no requiera una acción inmediata.
+ Sin embargo, si la limitación provoca una latencia inaceptable del cliente, degrada la experiencia del usuario o impide que las operaciones críticas se completen a tiempo, proceda con las siguientes opciones de mitigación.

Cuando necesite solucionar problemas de limitación, primero determine si la limitación se debe a:
+ **Picos de tráfico temporales:** incrementos de tráfico de corta duración que superan la capacidad aprovisionada pero que no se mantienen. Estos requieren estrategias diferentes a las del tráfico alto continuo.
+ **Tráfico alto continuo:** cargas de trabajo sostenidas que superan de forma coherente la capacidad aprovisionada.

Para los picos de tráfico, considere las estrategias del blog *Handle traffic spikes with Amazon DynamoDB provisioned capacity* en [Recursos adicionales](#throttling-additional-resources).

Para un tráfico elevado y continuo, considere las siguientes opciones de ajuste de capacidad:
+ [TableReadProvisionedThroughputExceeded](#throttling-table-read-provisioned) 
+ [TableWriteProvisionedThroughputExceeded](#throttling-table-write-provisioned)
+ [IndexReadProvisionedThroughputExceeded](#throttling-index-read-provisioned) 
+ [IndexWriteProvisionedThroughputExceeded](#throttling-index-write-provisioned) 

### TableReadProvisionedThroughputExceeded
<a name="throttling-table-read-provisioned"></a>

**Cuando esto ocurre**  
La tasa de consumo de lectura de la aplicación supera las [unidades de capacidad de lectura (RCU) aprovisionadas](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-ReadCapacityUnits) configuradas para la tabla. Puede supervisar las métricas de CloudWatch en [Diagnóstico y supervisión comunes](#provisioned-capacity-exceeded-diagnosis-monitoring) para analizar el evento de limitación.

**Enfoque de resolución**  
Tenga en cuenta estas estrategias para resolver la limitación de la capacidad de lectura:
+ **Cambie al modo de capacidad bajo demanda:** considere la posibilidad de [cambiar la tabla a modo bajo demanda](#procedure-switch-ondemand) si experimenta una limitación frecuente debido a los picos de tráfico. Bajo demanda elimina las preocupaciones de aprovisionamiento y se escala automáticamente con la carga de trabajo.
+ **Si permanece en el modo aprovisionado y escalado automático no está habilitado:**
  + Considere [aumentar la capacidad de lectura de la tabla](#provisioned-capacity-exceeded-increase-table-throughput). 
  + [Habilite el escalado automático para la capacidad de lectura](#provisioned-capacity-configure-autoscaling) en la tabla.
+ **Si el escalado automático está habilitado (predeterminado para las tablas creadas en la consola):** 
  +  [Optimice los parámetros de lectura de escalado automático de la tabla](#provisioned-capacity-optimize-autoscaling-settings).

### TableWriteProvisionedThroughputExceeded
<a name="throttling-table-write-provisioned"></a>

**Cuando esto ocurre**  
La tasa de consumo de escritura de la aplicación supera las [unidades de capacidad de escritura (WCU) aprovisionadas](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-WriteCapacityUnits) configuradas para la tabla. Puede supervisar las métricas de CloudWatch en [Diagnóstico y supervisión comunes](#provisioned-capacity-exceeded-diagnosis-monitoring) para analizar el evento de limitación.

**Enfoque de resolución**  
Tenga en cuenta estas estrategias para resolver la limitación de la capacidad de escritura:
+ **Cambie al modo de capacidad bajo demanda:** considere la posibilidad de [cambiar la tabla a modo bajo demanda](#procedure-switch-ondemand) si experimenta una limitación frecuente debido a los picos de tráfico. Bajo demanda elimina las preocupaciones de aprovisionamiento y se escala automáticamente con la carga de trabajo.
+ **Si permanece en el modo aprovisionado y escalado automático no está habilitado:**
  + Considere [aumentar la capacidad de escritura de la tabla](#provisioned-capacity-exceeded-increase-table-throughput).
  + [Habilite el escalado automático para la capacidad de escritura](#provisioned-capacity-configure-autoscaling) en la tabla.
+ **Si el escalado automático está habilitado (predeterminado para las tablas creadas en la consola):** 
  + [Optimice los parámetros de escritura de escalado automático de la tabla](#provisioned-capacity-optimize-autoscaling-settings).

### IndexReadProvisionedThroughputExceeded
<a name="throttling-index-read-provisioned"></a>

**Cuando esto ocurre**  
El consumo de lectura en un índice secundario global (GSI) supera las [unidades de capacidad de lectura (RCU) aprovisionadas](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-ReadCapacityUnits) del GSI. Puede supervisar las métricas de CloudWatch en [Diagnóstico y supervisión comunes](#provisioned-capacity-exceeded-diagnosis-monitoring) para analizar el evento de limitación.

**Enfoque de resolución**  
Tenga en cuenta estas estrategias para resolver la limitación de la capacidad de lectura de GSI:
+ **Cambie al modo de capacidad bajo demanda:** considere [cambiar la tabla base a bajo demanda](#procedure-switch-ondemand) si experimenta limitaciones frecuentes debido a los picos de tráfico. Bajo demanda elimina las preocupaciones de aprovisionamiento y se escala automáticamente con la carga de trabajo.
+ **Si permanece en el modo aprovisionado y escalado automático no está habilitado:**
  + Considere [aumentar la capacidad de lectura del GSI](#provisioned-capacity-exceeded-increase-index-throughput). 
  + [Habilite el escalado automático para la capacidad de lectura](#provisioned-capacity-configure-autoscaling) en el GSI.
+ **Si el escalado automático está habilitado (predeterminado para las tablas creadas en la consola):**
  + [Optimice los parámetros de lectura de escalado automático de GSI](#provisioned-capacity-optimize-autoscaling-settings).

### IndexWriteProvisionedThroughputExceeded
<a name="throttling-index-write-provisioned"></a>

**Cuando esto ocurre**  
Las actualizaciones de los elementos de la tabla base desencadenan las escrituras en un GSI que superan la [capacidad de escritura aprovisionada de GSI](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-WriteCapacityUnits). Esto provoca una [limitación de contrapresión](gsi-throttling.md) en las escrituras de la tabla base. Puede supervisar las métricas de CloudWatch en [Diagnóstico y supervisión comunes](#provisioned-capacity-exceeded-diagnosis-monitoring) para analizar el evento de limitación.

**Enfoque de resolución**  
Tenga en cuenta estas estrategias para resolver la limitación de la capacidad de escritura de GSI:
+ **Cambie al modo de capacidad bajo demanda:** considere [cambiar la tabla base a bajo demanda](#procedure-switch-ondemand) si experimenta limitaciones frecuentes debido a los picos de tráfico. Bajo demanda elimina las preocupaciones de aprovisionamiento y se escala automáticamente con la carga de trabajo.
+ **Si permanece en el modo aprovisionado y escalado automático no está habilitado:**
  + Considere [aumentar la capacidad de escritura de GSI](#provisioned-capacity-exceeded-increase-index-throughput).
  + [Habilite el escalado automático para la capacidad de escritura](#provisioned-capacity-configure-autoscaling) en el GSI.
+ **Si el escalado automático está habilitado (predeterminado para las tablas creadas en la consola):**
  + [Optimice los parámetros de escritura de escalado automático de GSI](#provisioned-capacity-optimize-autoscaling-settings).

## Diagnóstico y supervisión comunes
<a name="provisioned-capacity-exceeded-diagnosis-monitoring"></a>

Al solucionar problemas de rendimiento, varias métricas de CloudWatch pueden ayudar a identificar la causa raíz.

**Métricas esenciales de CloudWatch**  
Supervise estas métricas de claves para diagnosticar la limitación de la capacidad aprovisionada:
+ **Eventos de limitación:** [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadProvisionedThroughputThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadProvisionedThroughputThrottleEvents) y [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteProvisionedThroughputThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteProvisionedThroughputThrottleEvents) realizan un seguimiento cuando las solicitudes se limitan debido a este motivo. [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadThrottleEvents) y [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteThrottleEvents) realizan un seguimiento cuando las solicitudes de lectura o escritura superan la capacidad aprovisionada.
+ **Consumo de capacidad:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedReadCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedReadCapacityUnits) y [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedWriteCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedWriteCapacityUnits) muestran el uso real.
+ **Capacidad aprovisionada:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedReadCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedReadCapacityUnits) y [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedWriteCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedWriteCapacityUnits) muestran los límites configurados.

## Procedimientos de resolución
<a name="throttling-resolution-procedures"></a>

### Aumento de la capacidad de rendimiento de la tabla
<a name="provisioned-capacity-exceeded-increase-table-throughput"></a>

Utilice este procedimiento cuando el escalado automático no esté habilitado y necesite un aumento de capacidad inmediato.

1. Actualice la capacidad aprovisionada de la tabla mediante la consola de DynamoDB, la AWS CLI o el SDK:
   + **Para la capacidad de lectura:** aumente el parámetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html), que especifica el número máximo de lecturas altamente coherentes que se consumen por segundo antes de que DynamoDB limite las solicitudes.
   + **Para la capacidad de escritura:** aumente el parámetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html), que especifica el número máximo de escrituras que se consumen por segundo antes de que DynamoDB limite las solicitudes.

1. Compruebe que la nueva configuración de capacidad no supere las [cuotas de rendimiento por tabla](ServiceQuotas.md) y que el consumo total de la cuenta se mantenga por debajo de las [cuotas de rendimiento por cuenta](ServiceQuotas.md) de la región. Si se está acercando a estos límites, considere [cambiar al modo de capacidad bajo demanda](#procedure-switch-ondemand) en su lugar.

### Configuración del escalado automático de la tabla para ajustar la capacidad de lectura o escritura de la tabla o GSI
<a name="provisioned-capacity-configure-autoscaling"></a>

Configure el [escalado automático](AutoScaling.md) de DynamoDB para ajustar automáticamente la capacidad de lectura o escritura en función de los patrones de tráfico. Puede configurar el escalado automático de forma independiente para las tablas y para los GSI, con controles independientes para las unidades de capacidad de lectura y escritura. 

1. Habilite el escalado automático para la capacidad de lectura, capacidad de escritura o ambas en la tabla o GSI.

1. Establezca un porcentaje de uso objetivo con margen de maniobra para los picos de tráfico.
**nota**  
Un uso objetivo menor aumenta los costos y la frecuencia de escalado. Los objetivos por debajo del 40 % pueden provocar un sobreaprovisionamiento. Supervise los patrones de uso y los costos para equilibrar el rendimiento y la eficiencia.

1. Establecimiento de los límites de capacidad:
   + **Mínimo de RCU/WCU:** mantiene una capacidad suficiente durante los periodos de tráfico bajo.
   + **Máximo de RCU/WCU:** se adapta a las demandas de picos de tráfico y protege contra los eventos de escalado descontrolado.

Para obtener instrucciones sobre la configuración y la administración del escalado automático de DynamoDB, consulte [Administración automática de la capacidad de rendimiento con el escalado automático de DynamoDB](AutoScaling.md).

**nota**  
Por lo general, el escalado automático tarda varios minutos en responder a los cambios de tráfico. En caso de picos de tráfico repentinos, la capacidad de ampliación de la tabla proporciona protección inmediata mientras el escalado automático se ajusta. Configure el uso objetivo con el margen de maniobra adecuado para disponer de tiempo para escalar las operaciones y preservar la capacidad de ampliación ante una demanda imprevista.

### Optimización de los ajustes de escalado automático de lectura o escritura de la tabla o índice
<a name="provisioned-capacity-optimize-autoscaling-settings"></a>

Utilice este procedimiento cuando el [escalado automático](AutoScaling.md) esté habilitado pero se siga produciendo la limitación. Puede ajustar el escalado automático de forma independiente para las tablas y para los índices secundarios globales (GSI), con controles independientes para las unidades de capacidad de lectura y escritura.
+ **Ajuste el uso objetivo:** considere reducir el uso objetivo de la tabla o los GSI para desencadenar el escalado antes de que se produzca la limitación. Asegúrese de supervisar el tráfico después de realizar estos ajustes. Consulte [Configuración del escalado automático de la tabla para ajustar la capacidad de lectura o escritura de la tabla o GSI](#provisioned-capacity-configure-autoscaling) para obtener más información sobre el consumo de capacidad y las implicaciones de costos.
+ **Revise los límites de capacidad:** asegúrese de que los ajustes de capacidad mínima y máxima se ajusten a los patrones de carga de trabajo reales.

### Cambio al modo de capacidad bajo demanda
<a name="procedure-switch-ondemand"></a>

Para obtener información general sobre el cambio de los modos de capacidad, consulte [Aspectos a tener en cuenta al cambiar los modos de capacidad en DynamoDB](bp-switching-capacity-modes.md). Consulte Service Quotas para obtener información sobre las [restricciones específicas al cambiar de modo](troubleshooting-throttling-diagnostics.md).

### Aumento de la capacidad de rendimiento de GSI
<a name="provisioned-capacity-exceeded-increase-index-throughput"></a>

Utilice este procedimiento cuando el escalado automático no esté habilitado en el GSI o necesite un aumento de capacidad inmediato.

1. Actualice la capacidad aprovisionada de GSI mediante la consola de DynamoDB, la AWS CLI o el SDK:
   + **Para la capacidad de lectura:** aumente el parámetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html) para el GSI específico, que especifica el número máximo de lecturas que el GSI puede consumir por segundo antes de que DynamoDB limite las solicitudes. Tenga en cuenta que los GSI solo admiten lecturas coherentes posteriores.
   + **Para la capacidad de escritura:** aumente el parámetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html) para el GSI específico, que especifica el número máximo de escrituras que el GSI puede consumir por segundo antes de que DynamoDB limite las solicitudes.

1. Asegúrese de que la capacidad de rendimiento aprovisionada de GSI se mantenga dentro de las [cuotas de rendimiento por cuenta y por tabla](ServiceQuotas.md).

## Recursos adicionales
<a name="throttling-additional-resources"></a>
+  Para obtener información detallada sobre cómo gestionar los picos de tráfico en las tablas de capacidad aprovisionada de DynamoDB, incluidas varias estrategias, desde el uso del escalado automático y la capacidad de ampliación hasta la administración estratégica de la limitación, consulte [Handle traffic spikes with Amazon DynamoDB provisioned capacity](https://aws.amazon.com/blogs//database/handle-traffic-spikes-with-amazon-dynamodb-provisioned-capacity/). 
+ Para obtener información sobre cómo utilizar una expresión cron para programar una política de escalado, consulte [Optimize costs by scheduling provisioned capacity for DynamoDB](https://aws.amazon.com/blogs/database/optimize-costs-by-scheduling-provisioned-capacity-for-amazon-dynamodb/).
+ Para obtener información práctica sobre la supervisión y el análisis de los patrones de uso del rendimiento de las tablas de DynamoDB en el modo de capacidad aprovisionada, consulte [Cómo evaluar la utilización del rendimiento de las tablas de Amazon DynamoDB en el modo aprovisionado](https://aws.amazon.com/blogs/database/how-to-evaluate-throughput-utilization-for-amazon-dynamodb-tables-in-provisioned-mode/).