Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Evaluación de la capacidad aprovisionada para lograr un aprovisionamiento del tamaño adecuado en la tabla de DynamoDB

Modo de enfoque
Evaluación de la capacidad aprovisionada para lograr un aprovisionamiento del tamaño adecuado en la tabla de DynamoDB - Amazon DynamoDB

En esta sección se proporciona información general sobre cómo evaluar si tiene aprovisionamiento del tamaño adecuado en las tablas de DynamoDB. A medida que evolucione la carga de trabajo, debe modificar los procedimientos operativos de manera adecuada, especialmente si la tabla de DynamoDB está configurada en modo aprovisionado y corre el riesgo de aprovisionar en exceso o de manera insuficiente las tablas.

Los procedimientos que se describen a continuación requieren información estadística que se debe capturar de las tablas de DynamoDB que son compatibles con la aplicación de producción. Para entender el comportamiento de la aplicación, debe definir un periodo de tiempo que sea lo suficientemente significativo como para captar la estacionalidad de los datos de la aplicación. Por ejemplo, si la aplicación muestra patrones semanales, utilizar un periodo de tres semanas debería darle suficiente espacio para analizar las necesidades de rendimiento de la aplicación.

Si no sabe por dónde empezar, utilice al menos un mes de uso de datos para los cálculos que se indican a continuación.

Al evaluar la capacidad, las tablas de DynamoDB pueden configurar las unidades de capacidad de lectura (RCU) y las unidades de capacidad de escritura (WCU) de forma independiente. Si las tablas tienen algún índice secundario global (GSI) configurado, deberá especificar el rendimiento que consumirá, que también será independiente de las RCU y las WCU de la tabla base.

nota

Los índices secundarios locales (LSI) consumen capacidad de la tabla base.

Cómo recuperar las métricas de consumo de las tablas de DynamoDB

Para evaluar la tabla y la capacidad del GSI, monitoree las siguientes métricas de CloudWatch y seleccione la dimensión adecuada para recuperar la información de la tabla o del GSI:

Unidades de capacidad de lectura Unidades de capacidad de escritura

ConsumedReadCapacityUnits

ConsumedWriteCapacityUnits

ProvisionedReadCapacityUnits

ProvisionedWriteCapacityUnits

ReadThrottleEvents

WriteThrottleEvents

Puede hacer esto a través de la AWS CLI o la AWS Management Console.

AWS CLI

Antes de recuperar las métricas de consumo de la tabla, tendremos que empezar por capturar algunos puntos de datos históricos mediante la API de CloudWatch.

Comience por crear dos archivos: write-calc.json y read-calc.json. Estos archivos representarán los cálculos de una tabla o GSI. Deberá actualizar algunos de los campos, como se indica en la tabla siguiente, para que coincidan con el entorno.

Nombre del campo Definición Ejemplo
<table-name> El nombre de la tabla que analizará SampleTable
<period> El periodo de tiempo que utilizará para evaluar el objetivo de utilización, en segundos Para un periodo de 1 hora, debe especificar: 3600
<start-time> El comienzo del intervalo de evaluación, especificado en formato ISO8601 2022-02-21T23:00:00
<end-time> El final del intervalo de evaluación, especificado en formato ISO8601 2022-02-22T06:00:00

El archivo de cálculos de escritura recuperará la cantidad de WCU aprovisionadas y consumidas en el periodo de tiempo del intervalo de fechas especificado. También generará un porcentaje de utilización que se usará para el análisis. El contenido completo del archivo write-calc.json debe ser similar al siguiente:

{ "MetricDataQueries": [ { "Id": "provisionedWCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ProvisionedWriteCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Average" }, "Label": "Provisioned", "ReturnData": false }, { "Id": "consumedWCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ConsumedWriteCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>"" } ] }, "Period": <period>, "Stat": "Sum" }, "Label": "", "ReturnData": false }, { "Id": "m1", "Expression": "consumedWCU/PERIOD(consumedWCU)", "Label": "Consumed WCUs", "ReturnData": false }, { "Id": "utilizationPercentage", "Expression": "100*(m1/provisionedWCU)", "Label": "Utilization Percentage", "ReturnData": true } ], "StartTime": "<start-time>", "EndTime": "<ent-time>", "ScanBy": "TimestampDescending", "MaxDatapoints": 24 }

El archivo de cálculos de lectura utiliza un archivo similar. Este archivo recuperará cuántas RCU se aprovisionaron y consumieron durante el periodo de tiempo del intervalo de fechas especificado. El contenido del archivo read-calc.json debe ser similar al siguiente:

{ "MetricDataQueries": [ { "Id": "provisionedRCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ProvisionedReadCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Average" }, "Label": "Provisioned", "ReturnData": false }, { "Id": "consumedRCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ConsumedReadCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Sum" }, "Label": "", "ReturnData": false }, { "Id": "m1", "Expression": "consumedRCU/PERIOD(consumedRCU)", "Label": "Consumed RCUs", "ReturnData": false }, { "Id": "utilizationPercentage", "Expression": "100*(m1/provisionedRCU)", "Label": "Utilization Percentage", "ReturnData": true } ], "StartTime": "<start-time>", "EndTime": "<end-time>", "ScanBy": "TimestampDescending", "MaxDatapoints": 24 }

Una vez que haya creado los archivos, podrá empezar a recuperar los datos de uso.

  1. Para recuperar los datos de utilización de escritura, ejecute el siguiente comando:

    aws cloudwatch get-metric-data --cli-input-json file://write-calc.json
  2. Para recuperar los datos de utilización de lectura, ejecute el siguiente comando:

    aws cloudwatch get-metric-data --cli-input-json file://read-calc.json

El resultado de ambas consultas será una serie de puntos de datos en formato JSON que se utilizarán para el análisis. El resultado dependerá de la cantidad de puntos de datos que haya especificado, del periodo y de los propios datos de carga de trabajo específicos. Podría tener un aspecto similar al siguiente:

{ "MetricDataResults": [ { "Id": "utilizationPercentage", "Label": "Utilization Percentage", "Timestamps": [ "2022-02-22T05:00:00+00:00", "2022-02-22T04:00:00+00:00", "2022-02-22T03:00:00+00:00", "2022-02-22T02:00:00+00:00", "2022-02-22T01:00:00+00:00", "2022-02-22T00:00:00+00:00", "2022-02-21T23:00:00+00:00" ], "Values": [ 91.55364583333333, 55.066631944444445, 2.6114930555555556, 24.9496875, 40.94725694444445, 25.61819444444444, 0.0 ], "StatusCode": "Complete" } ], "Messages": [] }
nota

Si especifica un periodo corto y un intervalo de tiempo largo, es posible que tenga que modificar MaxDatapoints, que es el valor predeterminado establecido en 24 en el script. Este representa un punto de datos por hora y 24 por día.

AWS Management Console
  1. Inicie sesión en la AWS Management Console y navegue hasta la página del servicio de CloudWatch. Seleccione la Región de AWS apropiada si es necesario.

  2. Localice la sección Métricas en la barra de navegación izquierda y seleccione Todas las métricas.

  3. Esto abrirá un panel con dos paneles. El panel superior verá el gráfico y en el panel inferior tendrá las métricas que desea representar en un gráfico. Elija DynamoDB.

  4. Elija la pestaña Métricas de tabla. Esto le mostrará las tablas en la región actual.

  5. Utilice el cuadro de búsqueda para buscar el nombre de la tabla y elegir las métricas de la operación de escritura: ConsumedWriteCapacityUnits y ProvisionedWriteCapacityUnits

    nota

    En este ejemplo se habla de las métricas de las operaciones de escritura, pero también puede utilizar estos pasos para representar gráficamente las métricas de las operaciones de lectura.

  6. Seleccione la pestaña Métricas diagramadas (2) para modificar las fórmulas. De forma predeterminada, CloudWatch seleccionará la función estadística Media para los gráficos.

    Las métricas seleccionadas representadas gráficamente y la Media como función estadística predeterminada.
  7. Con ambas métricas gráficas seleccionadas (la casilla de verificación de la izquierda), seleccione el menú Agregar matemática, seguido de Común y, a continuación, seleccione la función Porcentaje. Repita el procedimiento dos veces.

    Selección por primera vez de la función Percentage (Porcentaje):

    Consola de CloudWatch. Se selecciona la función de porcentaje para las métricas graficadas.

    Selección por segunda vez de la función Percentage (Porcentaje):

    Consola de CloudWatch. Se selecciona la función de porcentaje una segunda vez para las métricas graficadas.
  8. En este punto, debería tener cuatro métricas en el menú inferior. Vamos a trabajar en el cálculo de ConsumedWriteCapacityUnits. Para ser coherentes, necesitamos hacer coincidir los nombres con los que usamos en la sección de la AWS CLI. Haga clic en ID de m1 y cambie este valor a consumedWCU.

    Consola de CloudWatch. La métrica graficada con un identificador m1 pasa a llamarse consumedWCU.

    Cambie el nombre de la etiqueta ConsumedWriteCapacityUnit a consumedWCU.

    La métrica graficada con una etiqueta ConsumedWriteCapacityUnit pasa a llamarse consumedWCU.
  9. Cambie la estadística de Average (Media) a Sum (Suma). Esta acción creará automáticamente otra métrica llamada ANOMALY_DETECTION_BAND. Para conocer el alcance de este procedimiento, vamos a ignorarlo eliminando la casilla de verificación de la métrica ad1 recién generada.

    Consola de CloudWatch. La estadística SUM se selecciona en la lista desplegable de las métricas graficadas.
    Consola de CloudWatch. La métrica ANOMALY_DETECTION_BAND se elimina de la lista de métricas graficadas.
  10. Repita el paso 8 para cambiar el nombre de ID de m2 a provisionedWCU. Deje la estadística establecida en Media.

    Consola de CloudWatch. La métrica graficada con un identificador m2 cambia de nombre a provisionedWCU.
  11. Seleccione la etiqueta Expression1 y actualice el valor a m1 y la etiqueta a Consumed WCUs (WCU consumidas).

    nota

    Asegúrese de haber seleccionado solo m1 (casilla de verificación de la izquierda) y provisionedWCU para visualizar correctamente los datos. Actualice la fórmula haciendo clic en Details (Detalles) y cambiándola a consumedWCU/PERIOD(consumedWCU). Es posible que este paso también genere otra métrica de ANOMALY_DETECTION_BAND, pero para el alcance de este procedimiento podemos ignorarla.

    Se seleccionan m1 y provisionedWCU. Los detalles de m1 se actualizan como consumedWCU/PERIOD(consumedWCU).
  12. Ahora debería tener dos gráficos: uno que indica las WCU aprovisionadas en la tabla y otro que indica las WCU consumidas. Es posible que la forma del gráfico sea diferente a la de abajo, pero puede usarla como referencia:

    Gráfico con las WCU aprovisionadas y consumidas para la tabla representada.
  13. Actualice la fórmula porcentual seleccionando el gráfico Expression2 (e2). Cambie el nombre de las etiquetas e ID a utilizationPercentage. Cambie el nombre de la fórmula para que coincida con 100*(m1/provisionedWCU).

    Consola de CloudWatch. Las etiquetas y los ID de Expression2 se renombran a utilizationPercentage.
    Consola de CloudWatch. La fórmula de porcentaje de Expression2 se actualiza a 100*(m1/aprovisionada/WCU).
  14. Elimine la casilla de verificación de todas las métricas, excepto de utilizationPercentage, para visualizar los patrones de utilización. El intervalo predeterminado está establecido en 1 minuto, pero no dude en modificarlo según lo necesite.

    Gráfico de la métrica utilizationPercentage para el intervalo de tiempo seleccionado.

Esta es una vista de un periodo de tiempo más largo, así como un periodo mayor de 1 hora. Puede ver que hay algunos intervalos en los que la utilización fue superior al 100 %, pero esta carga de trabajo en particular tiene intervalos más largos sin ningún uso.

Patrón de uso durante un periodo prolongado. Destaca los periodos de uso superiores al 100 % o nulos.

En este punto, es posible que obtenga resultados diferentes de las imágenes de este ejemplo. Todo depende de los datos de la carga de trabajo. Los intervalos con una utilización superior al 100 % tienden a limitar los eventos. DynamoDB ofrece capacidad de ampliación, pero tan pronto como se complete la capacidad de ampliación, se limitará todo lo que supere el 100 %.

Antes de recuperar las métricas de consumo de la tabla, tendremos que empezar por capturar algunos puntos de datos históricos mediante la API de CloudWatch.

Comience por crear dos archivos: write-calc.json y read-calc.json. Estos archivos representarán los cálculos de una tabla o GSI. Deberá actualizar algunos de los campos, como se indica en la tabla siguiente, para que coincidan con el entorno.

Nombre del campo Definición Ejemplo
<table-name> El nombre de la tabla que analizará SampleTable
<period> El periodo de tiempo que utilizará para evaluar el objetivo de utilización, en segundos Para un periodo de 1 hora, debe especificar: 3600
<start-time> El comienzo del intervalo de evaluación, especificado en formato ISO8601 2022-02-21T23:00:00
<end-time> El final del intervalo de evaluación, especificado en formato ISO8601 2022-02-22T06:00:00

El archivo de cálculos de escritura recuperará la cantidad de WCU aprovisionadas y consumidas en el periodo de tiempo del intervalo de fechas especificado. También generará un porcentaje de utilización que se usará para el análisis. El contenido completo del archivo write-calc.json debe ser similar al siguiente:

{ "MetricDataQueries": [ { "Id": "provisionedWCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ProvisionedWriteCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Average" }, "Label": "Provisioned", "ReturnData": false }, { "Id": "consumedWCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ConsumedWriteCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>"" } ] }, "Period": <period>, "Stat": "Sum" }, "Label": "", "ReturnData": false }, { "Id": "m1", "Expression": "consumedWCU/PERIOD(consumedWCU)", "Label": "Consumed WCUs", "ReturnData": false }, { "Id": "utilizationPercentage", "Expression": "100*(m1/provisionedWCU)", "Label": "Utilization Percentage", "ReturnData": true } ], "StartTime": "<start-time>", "EndTime": "<ent-time>", "ScanBy": "TimestampDescending", "MaxDatapoints": 24 }

El archivo de cálculos de lectura utiliza un archivo similar. Este archivo recuperará cuántas RCU se aprovisionaron y consumieron durante el periodo de tiempo del intervalo de fechas especificado. El contenido del archivo read-calc.json debe ser similar al siguiente:

{ "MetricDataQueries": [ { "Id": "provisionedRCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ProvisionedReadCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Average" }, "Label": "Provisioned", "ReturnData": false }, { "Id": "consumedRCU", "MetricStat": { "Metric": { "Namespace": "AWS/DynamoDB", "MetricName": "ConsumedReadCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Sum" }, "Label": "", "ReturnData": false }, { "Id": "m1", "Expression": "consumedRCU/PERIOD(consumedRCU)", "Label": "Consumed RCUs", "ReturnData": false }, { "Id": "utilizationPercentage", "Expression": "100*(m1/provisionedRCU)", "Label": "Utilization Percentage", "ReturnData": true } ], "StartTime": "<start-time>", "EndTime": "<end-time>", "ScanBy": "TimestampDescending", "MaxDatapoints": 24 }

Una vez que haya creado los archivos, podrá empezar a recuperar los datos de uso.

  1. Para recuperar los datos de utilización de escritura, ejecute el siguiente comando:

    aws cloudwatch get-metric-data --cli-input-json file://write-calc.json
  2. Para recuperar los datos de utilización de lectura, ejecute el siguiente comando:

    aws cloudwatch get-metric-data --cli-input-json file://read-calc.json

El resultado de ambas consultas será una serie de puntos de datos en formato JSON que se utilizarán para el análisis. El resultado dependerá de la cantidad de puntos de datos que haya especificado, del periodo y de los propios datos de carga de trabajo específicos. Podría tener un aspecto similar al siguiente:

{ "MetricDataResults": [ { "Id": "utilizationPercentage", "Label": "Utilization Percentage", "Timestamps": [ "2022-02-22T05:00:00+00:00", "2022-02-22T04:00:00+00:00", "2022-02-22T03:00:00+00:00", "2022-02-22T02:00:00+00:00", "2022-02-22T01:00:00+00:00", "2022-02-22T00:00:00+00:00", "2022-02-21T23:00:00+00:00" ], "Values": [ 91.55364583333333, 55.066631944444445, 2.6114930555555556, 24.9496875, 40.94725694444445, 25.61819444444444, 0.0 ], "StatusCode": "Complete" } ], "Messages": [] }
nota

Si especifica un periodo corto y un intervalo de tiempo largo, es posible que tenga que modificar MaxDatapoints, que es el valor predeterminado establecido en 24 en el script. Este representa un punto de datos por hora y 24 por día.

Cómo identificar tablas de DynamoDB con falta de aprovisionamiento

Para la mayoría de las cargas de trabajo, una tabla se considera con falta de aprovisionamiento cuando consume de forma continua más del 80 % de la capacidad aprovisionada.

La capacidad de ampliación es una característica de DynamoDB que permite a los clientes consumir temporalmente más RCU o WCU de las aprovisionadas originalmente (más que el rendimiento aprovisionado por segundo que se definió en la tabla). La capacidad de ampliación se creó para absorber los aumentos repentinos del tráfico debido a eventos especiales o picos de uso. Esta capacidad de ampliación no dura para siempre. Tan pronto como se agoten las RCU y WCU no utilizadas, se verá limitado si intenta consumir más capacidad de la aprovisionada. Cuando el tráfico de la aplicación se acerca a la tasa de utilización del 80 %, el riesgo de limitación es significativamente mayor.

La regla de la tasa de utilización del 80 % varía según la estacionalidad de los datos y el crecimiento del tráfico. Considere los siguientes escenarios:

  • Si el tráfico se ha mantenido estable a una tasa de utilización de aproximadamente el 90 % durante los últimos 12 meses, la tabla tiene la capacidad adecuada

  • Si el tráfico de la aplicación crece a un ritmo del 8 % mensual en menos de 3 meses, llegará al 100 %

  • Si el tráfico de la aplicación crece a un ritmo del 5 % mensual en un poco más de 4 meses, llegará al 100 %

Los resultados de las consultas anteriores proporcionan una imagen de la tasa de utilización. Úselos como guía para evaluar con más detalle otras métricas que pueden ayudarle a aumentar la capacidad de la tabla según sea necesario (por ejemplo, una tasa de crecimiento mensual o semanal). Trabaje con el equipo de operaciones para definir cuál es un buen porcentaje para la carga de trabajo y las tablas.

Hay escenarios especiales en los que los datos están sesgados cuando los analizamos a diario o semanalmente. Por ejemplo, en el caso de las aplicaciones estacionales que tienen picos de uso durante las horas de trabajo (pero que luego se reducen a casi cero fuera del horario laboral), podría resultar beneficioso programar el escalado automático en el que se especifiquen las horas del día (y los días de la semana) para aumentar la capacidad aprovisionada y cuándo reducirla. En lugar de optar por una mayor capacidad para cubrir las horas más ocupadas, también puede aprovechar las configuraciones de escalado automático de tablas de DynamoDB si la estacionalidad es menos pronunciada.

nota

Al crear una configuración de escalado automático de DynamoDB para la tabla base, recuerde incluir otra configuración para cualquier GSI que esté asociado a la tabla.

Cómo identificar tablas de DynamoDB con exceso de aprovisionamiento

Los resultados de la consulta obtenidos de los scripts anteriores proporcionan los puntos de datos necesarios para realizar algunos análisis iniciales. Si el conjunto de datos presenta valores de utilización inferiores al 20 % durante varios intervalos, es posible que la tabla tenga sobreaprovisionamiento. Para definir con más detalle si necesita reducir el número de WCU y RCU, debe revisitar las demás lecturas en los intervalos.

Cuando las tablas contienen varios intervalos de uso bajo, puede beneficiarse mucho del uso de políticas de escalado automático, ya sea programando el escalado automático o simplemente configurando las políticas de escalado automático predeterminadas para la tabla, que se basan en la utilización.

Si tiene una carga de trabajo con una relación de limitación entre baja utilización y alta (Max(ThrottleEvents)/Min(ThrottleEvents) en el intervalo), esto podría ocurrir cuando tenga una carga de trabajo muy elevada, en la que el tráfico aumente considerablemente durante algunos días (u horas), pero en general el tráfico es continuamente bajo. En estos escenarios, puede resultar beneficioso utilizar el escalado automático programado.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.