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.