Dimensionamiento de la memoria y cálculo del número de particiones

Puede calcular la cantidad de memoria y particiones necesarias para la configuración específica.

Atención: Este tema es aplicable cuando no utiliza la modalidad de copia COPY_TO_BYTES. Si utiliza la modalidad de copia COPY_TO_BYTES, el tamaño de memoria es mucho menor y el procedimiento de cálculo es distinto. Para obtener más información sobre esta modalidad, consulte Ajuste de la modalidad de copia.
WebSphere eXtreme Scale almacena datos dentro del espacio de direcciones de Mäquinas virtuales Java (JVM ). Cada JVM proporciona espacio de procesador para atender a llamadas para crear, recuperar, actualizar y suprimir, para los datos que están almacenados en la JVM . Además, cada JVM proporciona espacio de memoria para réplicas y entradas de datos. Los objetos Java varían en tamaño, por lo tanto, debe realizar una medición para calcular la cantidad de memoria necesaria.

Para calcular el tamaño de la memoria necesaria, cargue los datos de aplicación en una sola JVM . Cuando el uso del almacenamiento dinámico alcanza el 60%, anote el número de objetos que se utilizan. Este número máximo de objetos recomendado para cada una de las Mäquinas virtuales Java. Para obtener el tamaño más preciso, utilice datos realistas e incluya todos los índices definidos en el tamaño porque los índices también consumen memoria. El mejor forma de dimensionar el uso de memoria es ejecutar la salida verbosegc de la recogida de basura, ya que esta salida le proporciona los números después de la recogida. Puede consultar el uso del almacenamiento dinámico en cualquier momento mediante los MBeans o mediante programación, pero estas consultas le proporcionan solo una instantánea actual del almacenamiento dinámico. Es posible que esta instantánea incluya basura sin recoger, así que la utilización de ese método no es una indicación precisa de la memoria consumida.

Dimensionamiento de la configuración

Número de fragmentos por partición (valor de numShardsPerPartition)
Para calcular el número de fragmentos por partición, o el valor de numShardsPerPartition, añada 1 para el fragmento primario además del número total de fragmentos de réplica que desea. Para obtener información sobre el particionamiento, consulte Particionamiento.
numShardsPerPartition = 1 + número_total_de_réplicas

Número de Mäquinas virtuales Java (valor minNumJVMs)

Para dimensionar la configuración, primero decida sobre el número máximo de objetos que es necesario almacenar en total. Para determinar el número de Mäquinas virtuales Java que necesita, utilice la siguiente fórmula:
minNumJVMS=(numShardsPerPartition * numObjs) / numObjsPerJVM
Redondee este valor al valor entero más cercano.

Número de fragmentos (valor de numShards)

En el tamaño de crecimiento final, utilice 10 fragmentos para cada JVM . Como se ha descrito anteriormente, cada JVM tiene un fragmento primario y (N-1) fragmentos para las réplicas o, en este caso, nuevo réplicas. Puesto que ya tiene un número de Mäquinas virtuales Java para almacenar los datos, puede multiplicar el número de Mäquinas virtuales Java por 10 para determinar el número de fragmentos:
numShards = minNumJVMs * 10 shards/JVM

Número de particiones

Si una partición tiene un fragmento primario y un fragmento de réplica, la partición tiene dos fragmentos (primario y réplica). El número particiones es el total de fragmentos dividido por 2, redondeado por arriba hasta el número primo más cercano. Si la partición tiene un fragmento primario y dos réplicas, el número de particiones es el total de fragmentos dividido por 3, redondeado por arriba hasta el número primo más cercano.
numPartitions = numShards / numShardsPerPartition

Ejemplo de dimensionamiento

En este ejemplo, el número de entradas empieza en 250 millones. Cada año, el número de entradas aumenta aproximadamente un 14%. Después de siete años, el número total de entradas es de 500 millones, así que debe planificar la capacidad de la forma correspondiente. Para alta disponibilidad, es necesario una sola réplica. Con una réplica, el número de entradas se dobla, o 1.000.000,000 entradas. Como prueba, dos millones de entradas pueden almacenarse en cada JVM . Si se utilizan los cálculos en este escenario, es necesaria la siguiente configuración:

Inicio de la configuración

En función de los cálculos anteriores, empiece con 250 Mäquinas virtuales Java y vaya creciendo hacia 500 Mäquinas virtuales Java a lo largo de cinco años. Con esta configuración, puede gestionar el crecimiento incremental hasta que llegue al número final de entradas.

En esta configuración, se almacenan aproximadamente 200.000 entradas por partición (500 millones de entradas divididas entre 2503 particiones). Establezca el parámetro numberOfBuckets en la correlación que aloja las entradas en el número primo más alto más cercano, en este ejemplo 70887, lo que mantiene la proporción en 3 aproximadamente.

Cuando se alcanza el máximo número de Mäquinas virtuales Java

Cuando llegue al número máximo de 500 Mäquinas virtuales Java, aún podrá seguir aumentando el tamaño de la cuadrícula de datos. Como el número de Mäquinas virtuales Java aumentas hasta superar 500, el total de fragmentos empieza a caer por debajo de 10 para cada JVM , que está por debajo del número recomendado. Los fragmentos empiezan a crecer, lo que puede causar problemas. Repita el proceso de dimensionamiento considerando de nuevo el crecimiento futuro, y restablezca el recuento de particiones. Éste método requiere un reinicio completo o una interrupción de la cuadrícula de datos.

Número de servidores

Atención: No utilice la transferencia de páginas en un servidor en ninguna circunstancia.
Una sola JVM utiliza más memoria que el tamaño de almacenamiento dinámico. Por ejemplo, 1 GB de almacenamiento dinámico para una JVM en realidad utiliza 1,4 GB de memoria real. Determine la RAM libre disponible en el servidor. Divida la cantidad de RAM por la memoria por JVM para obtener el número máximo de Mäquinas virtuales Java en el servidor.