2012-01-10 10 views
25

Tengo una instancia de tomcat con el parámetro JMXRemote configurado. El VisualVM local puede obtener una muestra en la CPU, pero no para la memoria. El botón de memoria está en gris con un resumen diciendo: "muestreo de la memoria:.. No disponible No puede conectar con aplicación de destino Asegúrese de que la aplicación se ejecuta en un JDK 6 o JDK 7 apoyado"VisualVM incapaz de la memoria del muestreador

parámetro

JMXRemote:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9086 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
versión

Tomcat JDK:

JDK1.6.0.30 

VisualVM versión:

Version: 1.6.0_30 (Build 1320-110325); platform 110131-9c8b3bfb3a1e 
System: Windows Server 2008 R2 (6.1) , amd64 64bit 
Java: 1.6.0_30; Java HotSpot(TM) 64-Bit Server VM (20.5-b03, mixed mode) 
Vendor: Sun Microsystems Inc., http://java.sun.com/ 
Environment: Cp1252; en_US (visualvm) 
Userdir: C:\Users\Administrator\AppData\Roaming\.visualvm\7 
Clusters: C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\platform 
C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\visualvm 
C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\profiler 

versión de Tomcat:

Tomcat 6.0.32 

Estoy funcionando tanto el VisualVM y Tomcat en el servidor de la victoria de 2008. Cualquier cosa que hice mal?

+0

cangrejo ... tienes razón, publico la información incorrecta. déjame probarlo de nuevo con el mismo JDK – Reusable

+0

VisualVM es muy específico de la versión. Supongo que todavía está en desarrollo bastante rápido. –

+0

ver también http://stackoverflow.com/questions/726643/get-heap-dump-from-a-remote-application-in-java-using-jvisualvm – rogerdpack

Respuesta

1

Verificaría que la versión de VisualVM es exactamente la misma que la JVM.

VisualVM es muy específico de la versión. Supongo que todavía está en desarrollo bastante rápido.

(Re registró como una respuesta, ya que puede ser la solución)

0

me he enfrentado a problemas similares con jvisualvm, incluso he hecho una pregunta al respecto here

Un par de insights/consejos :

  1. Por lo tanto, para muestrear la memoria no necesita las opciones de jmx.
  2. Verificaría dos veces si tienes jvms de 64 bits instalados junto con jdks de 32 bits en la misma máquina (incluso si no están ejecutándose y todos los entornos vars definidos correctamente), he leído en algún lado que a veces conduce el JVisualVM loco :) (sí, sé que no suena razonable para nosotros, desarrolladores de Java)

  3. Si no funciona, solo desinstale todas las jdks que tenga e instale solo 1 que necesite. Puede resolver el problema.

espero que le ayudará a resolver el problema, después de todo, al igual que Pedro dijo que estas cosas son nuevas y en evolución

+0

1) si elimino jmx, local muestra solo 1 elemento "VisualVM" en el panel de aplicaciones de VisualVM 2) solo había 1 JDK 1.6.0_26 y creo que el servidor se unió con un JRE6 para comenzar. He instalado el JDK 1.6.0_30 hoy para ver si el nuevo JDK ayuda. 3) Voy a probar eso y ver qué pasa – Reusable

5

This blog post me lleva a creer que los directorios temporales de jvisualvm y Tomcat tienen que ser el lo mismo para el muestreo de memoria para trabajar. Uno de los comentarios sobre el mensaje:

el directorio temporal debe ajustarse a la utilizada por jvisualvm, que puede ser descubierta desde la ficha de propiedades del sistema VisualVM (java.io.tmpdir). Una vez que configuré correctamente el directorio CATALINA_TMPDIR, funcionó muy bien.

+1

para que los perfiles de memoria en una caja remota estén fuera de cuestión? – rogerdpack

+0

Creo que solo el muestreo de la CPU se puede realizar de forma remota. Para el muestreo de memoria puede intentar ejecutar visualvm en la máquina remota y usar el reenvío X11 para verlo, si eso es posible. –

+0

Intenté alinear los directorios temporales para el servicio Tomcat Windows y visualvm para que ambos sean C: \ Windows \ Temp, pero sigo obteniendo el mensaje "No admitido para esta JVM" en las visualvm views. –

6

Tuve el mismo problema antes. Debe haber descargado la versión de la página de inicio de jvisualvm, ¿verdad? ¡No lo hagas! Si usa el nuevo jdk 1.7, VisualVM ya está empaquetado en su carpeta jdk. Utilice esta versión, no tendrá ningún problema con la muestra de memoria.

+1

Eso hizo el truco para mí. Si usa jdk 1.7 visualvm ya es parte de jdk en bin /.Esto hizo que el muestreo de memoria funcionara. – mwhs

0

Aquí está mi solución para un problema similar: https://stackoverflow.com/a/16330238/715483

Puede resolver este error

$ ssh usuario @ -Y máquinaremota

$ wget http://java.net/projects/visualvm/downloads/download/release135/visualvm_135.zip

$ descomprimir visualvm_135.zip

$ cd visualvm_135/bin

$ ./visualvm

Esta instancia de visualvm tendrá todas las funciones, incluida la memoria y el muestreo de la CPU.

Lea más sobre esto aquí: http://shahriarinia.blogspot.com/2013/05/java-cpumemory-heap-usage-monitoring.html

http://mshahriarinia.com/

0

Asegúrese de que su VirtualVM/JDK es una copia de 32 bits si su JRE. Si está utilizando Eclipse, verifique el JRE seleccionado en la sección de JRE instalado.

0

Y tengo el mismo problema.

Siempre lancé tomcat como servicio y lo conecté con visualvm a través de la conexión jmx.

Cuando habían corregido catalina.bat:

set JAVA_OPTS=%JAVA_OPTS% 
    -Dcom.sun.management.jmxremote=true 
    -Dcom.sun.management.jmxremote.port=9090 
    -Dcom.sun.management.jmxremote.ssl=false 
    -Dcom.sun.management.jmxremote.authenticate=false 

y puesto en marcha con startup.bat, VisualVM determine automáticamente Tomcat, y el muestreo de memoria era activo.

0

Tengo el mismo problema pero con un entorno diferente. Mi servidor era una máquina Linux, el cliente una máquina con Windows 7, pero el problema es el mismo.

La solución fue lanzar jvisualvm en la misma máquina y con el mismo usuario que ejecuta la aplicación de destino. Si ejecuto jvisualvm con otro usuario (por ejemplo, root), el botón de memoria se vuelve gris.