2011-08-05 20 views
6

He comprobado el doble de la siguiente:¿Cómo puedo controlar Tomcat con jvisualvm, mostrando visualgc?

  • Me postulo jvisualvm en la misma caja donde se está ejecutando Tomcat.
  • Esto es Java 6u19.
  • Mi servicio Tomcat se está ejecutando como el mismo usuario con el que estoy conectado.
  • Mi servicio Tomcat está utilizando exactamente el mismo directorio JVM del que estoy usando jvisualvm.
  • Tomcat tiene habilitado JMX en un puerto específico, pero no creo que esto me ayude.

Con todo esto, yo hacer ver mi proceso de Tomcat en la lista de "local" para jvisualvm. Se muestra como "< Aplicación desconocida> (pid 5644)". Si hago doble clic en él, cada pestaña muestra "No compatible con esta JVM". Sin embargo, VisualVM se muestra en "Local" y todas las pestañas funcionan, obviamente usando la misma instancia de JVM. No hay una forma obvia de agregar una conexión JMX a la instancia "< Aplicación desconocida>".

Veo la instancia JMX de Tomcat en "Local" como "localhost: (mi número de puerto)", y esto funciona, pero la pestaña Visual GC muestra "No compatible con esta JVM", lo que supongo que significa Visual GC no funciona a través de JMX.

¿Qué estoy haciendo mal? Intenté comenzar jstatd. No hizo ninguna diferencia. Cuando comienzo jstatd, entonces visualvm ve un "jstatd" "Local" pero cuando hago doble clic en él, simplemente parece monitorear ese proceso jstatd y no cualquier otro proceso de Java.

NOTA: Decidí intentar ejecutar Tomcat no como un servicio, sino directamente en una ventana de CMD y, viola, ahora visualvm funciona perfectamente. Pensé que probaría esto cuando ejecutara "jps" y recibiera el reclamo "información de proceso no disponible" y buscara en Google eso y encontrara a alguien que dijera que lo obtuvieron cuando ejecutó cualquier aplicación Java como servicio. Esto ayuda en un banco de pruebas, pero no ayuda a descubrir cómo monitorear un sistema de producción.

Esto es Tomcat ejecutándose como un servicio de Windows bajo el envoltorio Tanuki en Windows Server 2003.

Respuesta

3

Se desprende de la descripción que Jvmstat es de alguna manera roto. Jvmstat es utilizado por Visual GC, jps y VisualVM. La razón por la que ve su Tomcat como una aplicación no reconocida en el nodo "Local" significa que VisualVM detectó (a través de jvmstat) que hay una aplicación Java en ejecución, pero no puede obtener ningún dato al respecto. Esto puede estar relacionado de alguna manera con el hecho de que está ejecutando su Tomcat como servicio de Windows. Puede intentar cerrar todas las aplicaciones java y eliminar el directorio hsperfdata_ {your_user_name}, que se encuentra en el directorio% TMP% y reiniciar Tomcat y VisualVM. Si el Tomcat se reconoce correctamente en el nodo "Local", Visual GC también funcionará. Si esto falla, inicie Tomcat y ejecute jps con:

jps -J-Djps.debug=true -J-Djps.printStackTrace=true 

y publique la salida. Esto podría mostrarnos por qué jvmstat no puede leer información de Tomcat.

Cuestiones relacionadas