Escalado de capacidad en un clúster de base de datos de Neptune sin servidor - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Escalado de capacidad en un clúster de base de datos de Neptune sin servidor

La configuración de un clúster de base de datos de Neptune sin servidor es similar a la configuración de un clúster normal aprovisionado, con una configuración adicional para las unidades mínimas y máximas de escalado y con el tipo de instancia establecido en db.serverless. La configuración de escalado se define en las unidades de capacidad de Neptune (NCU), cada una de las cuales consta de 2 GiB (gibibytes) de memoria (RAM), además de las redes y la capacidad de procesador virtual (vCPU) asociadas. Se configura como parte de un objeto ServerlessV2ScalingConfiguration y se representa en JSON, tal y como se muestra a continuación:

"ServerlessV2ScalingConfiguration": { "MinCapacity": (minimum NCUs, a floating-point number such as 1.0), "MaxCapacity": (maximum NCUs, a floating-point number such as 128.0) }

En cualquier momento, cada instancia de escritor o lector de Neptune tiene una capacidad medida por un número en coma flotante que representa el número de NCU que utiliza actualmente dicha instancia. Puede utilizar la CloudWatch ServerlessDatabaseCapacitymétrica a nivel de instancia para saber cuántas NCUs utiliza actualmente una determinada instancia de base de datos, y la métrica de utilización de la NCUUtilización para averiguar qué porcentaje de su capacidad máxima utiliza la instancia. Ambas métricas también están disponibles en el nivel de clúster de base de datos para mostrar la utilización promedio de los recursos del clúster de base de datos en su conjunto.

Al crear un clúster de base de datos de Neptune sin servidor, establece el número mínimo y máximo de unidades de capacidad de Neptune (NCU) para todas las instancias sin servidor.

El valor mínimo de NCU especificado determina el menor tamaño al que puede reducirse una instancia sin servidor del clúster de base de datos y, del mismo modo, el valor máximo de NCU determina el mayor tamaño al que puede aumentar una instancia sin servidor. El valor máximo de NCU más alto que puede establecer es 128,0 NCU y el mínimo más bajo es 1,0 NCU.

Neptune realiza un seguimiento continuo de la carga en cada instancia de Neptune sin servidor mediante la monitorización de la utilización de recursos como la CPU, la memoria y la red. La carga la generan las operaciones de la base de datos de la aplicación, el procesamiento en segundo plano del servidor y otras tareas administrativas.

Cuando la carga de una instancia sin servidor alcanza el límite de la capacidad actual o cuando Neptune detecta cualquier otro problema de rendimiento, la instancia se escala verticalmente de forma automática. Cuando la carga de la instancia disminuye, la capacidad se reduce verticalmente hasta alcanzar las unidades de capacidad mínimas configuradas, y la capacidad de la CPU se libera antes que la memoria. Esta arquitectura permite liberar recursos de forma gradual y controlada y gestiona las fluctuaciones de la demanda de forma eficaz.

Puede hacer que una instancia de lector se escale junto con la instancia de escritor o que se escale de forma independiente mediante la configuración de su nivel de promoción. Las instancias de lector en los niveles de promoción 0 y 1 se escalan al mismo tiempo que las de escritor, lo que permite que tengan el tamaño adecuado para asumir de forma rápida la carga de trabajo del escritor en caso de que se produzca una conmutación por error. Los lectores de los niveles de promoción 2 a 15 se escalan independientemente de la instancia de escritor y por separado.

Si ha creado un clúster de base de datos de Neptune como un clúster de varias zonas de disponibilidad (AZ) para garantizar una alta disponibilidad, Neptune sin servidor escala y reduce verticalmente las instancias de todas las AZ en función de la carga de la base de datos. Puede establecer el nivel de promoción de una instancia de lector en una AZ secundaria en 0 o 1 para que se escale o reduzca verticalmente junto con la capacidad de la instancia de escritor en la AZ principal, para que esté lista para asumir la carga de trabajo actual en cualquier momento.

nota

El almacenamiento de un clúster de bases de datos de Neptune consta de seis copias de todos los datos, repartidas en tres AZ, independientemente de si ha creado el clúster como un clúster de varias AZ o no. La replicación del almacenamiento la gestiona el subsistema de almacenamiento y no se ve afectada por Neptune sin servidor.

Selección de un valor de capacidad mínimo para un clúster de base de datos de Neptune sin servidor

El valor menor que se puede establecer para la capacidad mínima es de 1.0 NCU.

Asegúrese de no establecer el valor mínimo por debajo de lo que la aplicación requiere para funcionar de forma eficaz. Si se establece un valor demasiado bajo, se puede producir una mayor tasa de tiempos de espera en determinadas cargas de trabajo que consumen mucha memoria.

Si se establece el valor mínimo lo más bajo posible, se puede ahorrar dinero, ya que el clúster utilizará el número mínimo de recursos cuando la demanda sea baja. Sin embargo, si la carga de trabajo tiende a fluctuar de forma drástica, de muy baja a muy alta, puede ser más conveniente establecer el valor mínimo más alto, ya que de esta manera las instancias de Neptune sin servidor se escalarán verticalmente con mayor rapidez.

El motivo de esto es que Neptune elige los incrementos de escalado en función de la capacidad actual. Si la capacidad actual es baja, al principio Neptune escalará verticalmente de forma paulatina. Si el valor mínimo es mayor, Neptune comienza con un incremento de escalado mayor y, por lo tanto, puede escalar verticalmente de forma más rápida para hacer frente a un gran aumento repentino de la carga de trabajo.

Selección de un valor de capacidad máxima para un clúster de base de datos de Neptune sin servidor

El valor más alto que puede establecer para la capacidad máxima es 128.0 NCU y el más bajo es 2.5 NCU. Sea cual sea el valor máximo de capacidad que establezca, debe ser al menos igual al valor mínimo de capacidad que establezca.

Por regla general, establezca un valor máximo lo suficientemente alto como para hacer frente a los picos de carga que probablemente tenga la aplicación. Si se establece un valor demasiado bajo, se puede producir una mayor tasa de tiempos de espera en determinadas cargas de trabajo que consumen mucha memoria.

Establecer el valor máximo lo más alto posible tiene la ventaja de que probablemente la aplicación pueda gestionar incluso las cargas de trabajo más inesperadas. La desventaja es que se pierde parte de la capacidad de predecir y controlar los costos de los recursos. Un aumento inesperado de la demanda puede terminar costando mucho más de lo que su presupuesto había previsto.

La ventaja de un valor máximo específicamente establecido es que le permite hacer frente a los picos de demanda y, al mismo tiempo, limitar los costos de computación de Neptune.

nota

El cambio del rango de capacidad de un clúster de base de datos de Neptune sin servidor provoca cambios en los valores predeterminados de algunos parámetros de configuración. Neptune puede aplicar algunos de estos nuevos valores predeterminados con efecto inmediato, pero algunos de los cambios en los parámetros dinámicos se aplicarán después de reiniciar el sistema. El estado pending-reboot indica que es necesario reiniciar para aplicar algunos cambios en los parámetros.

Uso de la configuración actual para estimar los requisitos del sistema sin servidor

Si normalmente modifica la clase de instancia de base de datos de las instancias de base de datos aprovisionadas para hacer frente a cargas de trabajo especialmente altas o bajas, puede sacar partido de esa experiencia para hacer una estimación aproximada del rango de capacidad equivalente de Neptune sin servidor.

Estimación de la mejor configuración de capacidad mínima

Puede aplicar lo que sabe sobre el clúster de base de datos de Neptune existente para estimar la mejor configuración de capacidad mínima sin servidor.

Por ejemplo, si la carga de trabajo aprovisionada tiene requisitos de memoria demasiado altos para clases de instancias de base de datos pequeñas como T3 o T4g, elija una configuración de NCU mínima que proporcione memoria que sea comparable con una clase de instancia de base de datos R5 o R6g.

O bien, supongamos que utiliza la clase de instancia de base de datos db.r6g.xlarge cuando el clúster tiene una carga de trabajo baja. La clase de instancia de base de datos tiene 32 GiB de memoria, por lo que puede especificar una configuración mínima de NCU de 16 para crear instancias sin servidor que pueden reducirse verticalmente a aproximadamente la misma capacidad (cada NCU corresponde a unos 2 GiB de memoria). Si, en ocasiones, la instancia db.r6g.xlarge se ha infrautilizado, es posible que pueda especificar un valor más bajo.

Si la aplicación funciona de manera óptima cuando las instancias de base de datos pueden contener una determinada cantidad de datos en la memoria o en la caché del búfer, plantéese especificar una configuración mínima de NCU lo suficientemente grande como para proporcionar suficiente memoria. De lo contrario, es posible que los datos se expulsen de la caché del búfer cuando las instancias sin servidor se reduzcan verticalmente y, con el tiempo, deberán volver a leerse en la caché del búfer cuando las instancias se vuelvan a escalar verticalmente. Si la cantidad de E/S para devolver los datos a la caché del búfer es importante, podría merecer la pena elegir un valor de NCU mínimo más alto.

Si descubre que las instancias sin servidor se ejecutan la mayor parte del tiempo con una capacidad determinada, sería buena opción establecer la capacidad mínima un poco más baja. Neptune sin servidor puede estimar de forma eficaz cuánto y con qué rapidez deben escalarse verticalmente cuando la capacidad actual no sea drásticamente inferior a la capacidad necesaria.

En una configuración mixta, con lectores de Neptune sin servidor y un escritor aprovisionado, los lectores no se pueden escalar junto con el escritor. Dado que se escalan de forma independiente, establecer una capacidad mínima baja para ellos puede provocar un retraso excesivo de la replicación. Es posible que no tengan la capacidad suficiente para mantenerse al día con los cambios que realiza el escritor cuando hay una carga de trabajo con uso muy intensivo de escritura. En esta situación, establezca una capacidad mínima que sea comparable con la capacidad del escritor. En concreto, si observa un retraso de réplica en los lectores que se encuentran en los niveles de promoción 2 a 15, aumente la configuración de capacidad mínima del clúster.

Estimación de la mejor configuración de capacidad máxima

También puede aplicar lo que sabe sobre el clúster de base de datos de Neptune existente para estimar la configuración de capacidad máxima sin servidor que funcione mejor.

Por ejemplo, supongamos que utiliza la clase de instancia de base de datos db.r6g.4xlarge cuando el clúster tiene una carga de trabajo elevada. Esa clase de instancia de base de datos tiene 128 GiB de memoria, por lo que puede especificar una configuración de NCU máxima de 64 para configurar instancias equivalentes de Neptune sin servidor (cada NCU corresponde a unos 2 GiB de memoria). Puede especificar un valor más alto para permitir que la instancia de base de datos se escale verticalmente aún más en caso de que la instancia db.r6g.4xlarge no pueda gestionar siempre la carga de trabajo.

Si es poco frecuente que se produzcan picos inesperados en la carga de trabajo, se recomienda establecer una capacidad máxima lo suficientemente alta como para mantener el rendimiento de las aplicaciones incluso durante estos picos. Por otro lado, es posible que desee establecer una capacidad máxima más baja que pueda reducir el rendimiento durante picos inusuales, pero que permita a Neptune gestionar las cargas de trabajo previstas sin problemas, y esto limita los costos.