WebSphere eXtreme
Scale da soporte al dimensionamiento del consumo de memoria de instancias de BackingMap en cuadrículas de datos distribuidas. No se da soporte al dimensionamiento de consumo de memoria para instancias de cuadrícula de datos locales. El valor que notifica WebSphere eXtreme
Scale para una cuadrícula determinada se aproxima mucho al valor notificado por los análisis de volcado de almacenamiento dinámico. Si el objeto de correlación es complejo, es posible que los dimensionamientos sean menos precisos. Se visualiza el mensaje CWOBJ4543 en el registro para cada objeto de entrada de memoria caché que no se pueda dimensionar de forma precisa debido a que es demasiado complejo. Puede obtener una medición más precisa evitando la complejidad innecesaria de la correlación.
Procedimiento
- Habilite el agente de dimensionamiento.
Si utiliza una máquina virtual Java (JVM) 5 o posterior, utilice el agente de dimensionamiento. Si utiliza el agente de dimensionamiento,
WebSphere eXtreme
Scale puede obtener información adicional de la JVM para mejorar sus estimaciones. Se puede cargar el agente añadiendo
el argumento siguiente a la línea de mandatos de la JVM:
-javaagent:directorio lib de WXS/wxssizeagent.jar
Para una topología incorporada, añada el argumento a la línea de mandatos
del proceso de WebSphere Application Server.
Para una topología distribuida, añada el argumento a la línea de mandatos de los procesos (contenedores) de
eXtreme Scale y al proceso de
WebSphere Application Server.
Cuando se carga correctamente, se graba el mensaje siguiente en el archivo
SystemOut.log.
CWOBJ4541I: Se ha habilitado el dimensionamiento de memoria BackingMap mejorada.
- Elija tipos de datos Java
en lugar de tipos de datos personalizados, donde sea posible.
WebSphere eXtreme
Scale dimensiona con precisión
el coste de memoria de los tipos siguientes:
- java.lang.String y matrices donde String es la clase de componente
(String[])
- Todos los tipos de derivador primitivos (Byte, Short, Character, Boolean,
Long, Double, Float, Integer) y las matrices donde los derivadores primitivos
son el tipo de componente (por ejemplo, Integer[], Character[])
- java.math.BigDecimal y java.math.BigInteger y las matrices donde
estas dos clases son el tipo de componente (BigInteger[] y BigDecimal[])
- Tipos temporales (java.util.Date, java.sql.Date, java.util.Time,
java.sql.Timestamp)
- java.util.Calendar y java.util.GregorianCalendar
- Evite internación de objetos, cuando sea posible.
Cuando se inserta un objeto en una correlación,
WebSphere eXtreme
Scale asume que aloja la única referencia al objeto y todos los objetos a los que el objeto se refiere directamente. Si inserta 1000 objetos personalizados en una correlación y cada uno de ellos tiene una referencia a la misma instancia de serie,
WebSphere eXtreme
Scale dimensiona esa instancia de serie 1000 veces, sobrestimando el tamaño real de la correlación en el almacenamiento dinámico.
Sin embargo,
WebSphere eXtreme
Scale compensa correctamente en los escenarios de internación común siguientes:
- Referencias a las enumeraciones de Java 5
- Referencias a las clases que siguen el patrón de enumeración de Typesafe.
Las clases que siguen este patrón solo tienen definidos constructores privados,
tienen como mínimo un campo final estático privado de su propio tipo y
si implementan Serializable, la clase implementa el método readResolve().
- Internación del derivador primitivo de Java 5.
Por ejemplo, utilizando Integer.valueOf(1) en lugar de nuevo
Integer(1)
Si debe utilizar internación, utilice una de las técnicas siguientes para obtener estimaciones más precisas.
- Utilice los tipos personalizados cuidadosamente.
Cuando utilice tipos personalizados, elija tipos de datos primitivos
para los campos antes que tipos de objeto.
Además, consulte los tipos de objeto enumerados en la entrada
2 en sus propias implementaciones personalizadas.
Cuando utilice los tipos personalizados, conserve el árbol de objeto
en un nivel. Cuando inserte
un objeto personalizado en un correlación, WebSphere eXtreme
Scale solo
calculará el coste del objeto insertado, que incluye los campos primitivos y todos los objetos
a los que hace referencia directamente. WebSphere eXtreme
Scale no seguirá las referencias
más abajo en el árbol de objeto. Si inserta un objeto en la correlación,
y WebSphere eXtreme
Scale detecta que no se han seguido
las referencias durante el proceso de dimensionamiento, recibirá un mensaje con el código
CWOBJ4543 que incluirá el nombre de la clase que no se ha dimensionado
completamente. Cuando se produzca este error, trate las estadísticas sobre el tamaño de la correlación como datos de tendencias, en lugar de confiar en las estadísticas de tamaño como un total preciso.
- Utilice la modalidad de copia CopyMode.COPY_TO_BYTES, si es posible.
Utilice la modalidad de copia CopyMode.COPY_TO_BYTES para eliminar cualquier duda resultante de dimensionar el valor Objects que se está insertando en la correlación, incluso si el árbol Object tiene demasiados niveles para que se dimensione normalmente (lo que resulta en el mensaje CWOBJ4543).