2009-11-18 16 views
12

Beim Überwachen einer Remote-App (mit jstatd) kann ich die CPU-Auslastung weder profilieren noch überwachen. Die Heap-Überwachung (vorausgesetzt, ich verwende nicht G1) funktioniert. jvisualvm liefert die Nachricht "Nicht für diese JVM unterstützt". im CPU-Grafikfenster.CPU und Profiling werden für Remote-jvisualvm-Sitzung nicht unterstützt

Fehlt etwas in meinem Setup? Google zeigte sehr wenige Ergebnisse.

Die lokale Umgebung (Mac OS X 10.6):

java version "1.6.0_15" 
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219) 
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode) 

Die Remote-Umgebung (Linux-Version 2.6.16.27-0.9-smp (gcc Version 4.1.0 (SUSE Linux))):

java version "1.6.0_16" Java(TM) SE 
Runtime Environment (build 
1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode) 

Die lokale Überwachung funktioniert wie beschrieben.

Antwort

13

Remote-Profiling von Code und Zuweisung wird von Visual VM nicht unterstützt. Das nervt, aber wenn Sie die CPU-Diagramm aktivieren möchten Sie dies mit

durch Aktivierung JMX tun können
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=12345 

Sie müssen möglicherweise einige Authentifizierungseinstellungen auch in Ihrem Netzwerk basiert hinzuzufügen. Die JMX-Einstellungen geben Ihnen die CPU-Auslastung und den Thread-Status sowie einen Remote-Jstack. Visual VM features

EDIT Laden Sie die neueste Version von Visual vm 1.2.1 und laden Sie die VisaulVM-Sampler:

Eine Liste von Funktionen für die Remote-Version finden Sie hier. Dies wird von einer JMX-Verbindung gelesen, um die Profilinformationen anzuzeigen.

+0

Funktioniert! +1 für den VisualVM 1.2.1 und Plugin-Vorschlag & akzeptiert. – yawn

+2

Follow-up: JMX in 1.6 hat Sicherheit standardmäßig aktiviert. Für die Entwicklung möchte man vielleicht die Sicherheit deaktivieren, siehe http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#no_security – yawn

+0

"Remote-Profiling von Code und Zuweisung wird nicht unterstützt von Visual VM "- ist das immer noch so wie bei jvisualvm 1.3.8? – Yar

1

Liegt es daran, dass die Remote-Version (wenn auch geringfügig) größer als die lokale Version ist?

4

Anschließen des Eclipse-Java-Programms.

Schritt 1: gewährleisten Eclipse -> Einstellungen -> Java -> Installierte JREs zeigt auf die gleiche jdk, wo Sie die VisualVM begonnen haben.

Schritt 2: Rechts klicken Stellen Sie sicher -> Ausführen Konfiguration hat die folgende

-Dcom.sun.management.jmxremote = true -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun. management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.port = 16001

Schritt 3: Wichtig folgen Sie den nachstehenden Vorschlag.

https://visualvm.java.net/troubleshooting.html#jpswin2

Beschreibung: Ein Dialog Fehlermeldung, dass lokale Anwendungen nicht sofort nach VisualVM Start gezeigt überwacht werden. Lokal laufende Java-Anwendungen werden als (pid ###) angezeigt.

Lösung: Dies kann auf Windows-Systemen passieren, wenn der Benutzername Großbuchstaben enthält. In diesem Fall lautet der Benutzername UserName, das von JDK erstellte jvmstat-Verzeichnis ist jedoch% TMP% \ hsperfdata_username.Um das Problem zu umgehen, beenden Sie alle Java-Anwendungen, löschen Sie das Verzeichnis% TMP% \ hsperfdata_username und erstellen Sie ein neues Verzeichnis% TMP% \ hsperfdata_UserName.

Versuchen Sie auch JVMMonitor ist anständige Plugin für Eclipse stand alone Programmüberwachung.

Verwandte Themen