2009-01-13 21 views
6

Probablemente esta pregunta esté mejor redactada: ¿cómo afecta la ejecución de un servidor Java en un hipervisor como VMware ESX al montón de Java?Tamaño del almacenamiento JVM en invitados de VMware

  • Acceso a la pila de JVM es aleatorio desde la perspectiva OS/hipervisor
  • Es difícil para el sistema operativo huésped o hipervisor para optimizar la memoria que se accede aleatoriamente
  • Dado esto, puede el hipervisor detectar las páginas sin usar en JVM montón?

La sabiduría convencional para aplicaciones de servidor Java es que el rendimiento es mejor si se asigna todo el montón en el inicio de la JVM, en lugar de permitir el montón de cambiar el tamaño de forma dinámica a medida que surja la necesidad. En otras palabras, si establece el tamaño del almacenamiento dinámico en 1 GB, su proceso de Java obtendrá 1 GB de espacio de direcciones virtuales contiguas (más lo que sea necesario para los archivos binarios), memoria que ya no estará disponible para otras aplicaciones.

¿Es VMware lo suficientemente inteligente como para detectar que parte de este montón no está en uso? ¿Cómo afecta esto el rendimiento del GC? ¿Sería mejor dejar que el montón se redimensione dinámicamente en VMware? ¿Qué estrategias de GC funcionan mejor con los invitados de VMware?

Además, si alguien puede indicarme las pautas para ajustar montones de JVM en entornos virtualizados, le agradecería mucho.

Respuesta

5

relacionados con mi pregunta: ¿

Aquí es un PDF que proporciona una visión general de las consideraciones para ejecutar Java en VMware huéspedes: link text

2

por lo que en este caso, asegúrese de que reserva = OS de vRAM + JVM + tamaño de pila Espero que esto ayude.

pero mientras tanto, las siguientes son recomendaciones generales de VMware KB sitio:

Tamaño de la memoria de la máquina virtual para dejar un espacio adecuado para el almacenamiento dinámico de Java, las otras demandas de memoria del código de la máquina virtual de Java y la pila, y cualquier otro proceso de ejecución concurrente que necesita memoria del sistema operativo invitado.

Establezca el valor de reserva de memoria en VMware Infrastructure Client en el tamaño de la memoria de la máquina virtual. Como cualquier tipo de intercambio de memoria (físico o virtual) es perjudicial para el rendimiento del montón de JVM, especialmente para la recolección de basura.

Determine la cantidad óptima de CPU virtuales para una máquina virtual que aloja una aplicación Java probando la máquina virtual configurada con diferentes números de CPU virtuales en diferentes momentos con la misma carga.

Si está utilizando varios subprocesos de Garbage Collector en su JVM, haga coincidir el número de subprocesos con el número de CPU virtuales configuradas en la máquina virtual.

Para una supervisión y equilibrio de carga más fáciles, utilice un proceso de JVM por máquina virtual.

Si su servidor ESX está comprometido en exceso, asegúrese de que el Balloon Driver se esté ejecutando dentro de la máquina virtual para que la memoria se administre de manera óptima.

Cuestiones relacionadas