2012-06-28 11 views
7

Considero ejecutar VisualVM frente a una JVM de producción para ver qué está pasando allí; comenzó a consumir demasiada CPU por algún motivo.VisualVM en producción?

No debe dar como resultado una falla de JVM, así que estoy tratando de estimar todos los riesgos.

El único problema que veo en su site que podría hacer que JVM caiga está relacionado con el uso compartido de clases y la opción JVM -Xshare, pero el uso compartido de clase fafa no está habilitado en el modo servidor y/o en sistemas x64.

Entonces, ¿es realmente seguro ejecutar VisualVM contra una JVM de producción, si no es así? Cuáles son los riesgos que uno debería considerar y cuánta carga (CPU/memoria) ejecuta VisualVM contra una JVM (y perfila con ella) ponerlo?

Gracias

Respuesta

7

AFAIK VisualVM se pueden utilizar en la producción, pero sólo la usarían en un servidor que se carga ligera. Lo que podría hacer es esperar a que el servicio disminuya su velocidad y más tarde, cuando no se lo utiliza, probarlo para ver si algunas de las colecciones son sorprendentemente grandes. O podría desencadenar un volcado de pila y analizarlo fuera de línea.

Y no puede obtener estadísticas sobre llamadas a métodos sin una sobrecarga significativa. Java 6 y 7 son mejores que Java 5, pero aún así pueden ralentizar su aplicación en un 30% incluso con un generador de perfiles comercial.

+0

+1 para análisis fuera de línea – opyate

+0

análisis fuera de línea es bueno para las pérdidas de memoria, pero no me dará estadísticas sobre las llamadas al método –

+0

Y no puede obtener estadísticas sobre llamadas a métodos sin una sobrecarga significativa. Java 6 y 7 son mejores que Java 5, pero aún así pueden ralentizar su aplicación en un 30% incluso con un generador de perfiles comercial. –

2

En realidad, puede obtener información sin demasiada sobrecarga mediante el uso de volcados de pila. Incluso hay una secuencia de comandos para ayudarle a hacer esto en https://gist.github.com/851961

Este tipo de creación de perfiles es lo menos intrusivo que puede obtener.

+1

Los volcados de pila dan cierta información, pero no son útiles para detectar fugas de memoria. Los volcados de pila son más útiles, pero analizarlos es una ciencia completamente nueva –