Выборка памяти JVisualVM: удаленные приложения не поддерживаются - PullRequest
3 голосов
/ 14 сентября 2011

Я пытаюсь отслеживать удаленный процесс tomcat с помощью JVisualVM в Red Hat Linux.Выборка процессора работает нормально, но вкладка выборки памяти отключена.. "Выборка памяти: не доступно. Удаленные приложения не поддерживаются" .

Параметры командной строки процесса:

-Djavac.source=1.5 -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=11107

JVisualVm детали:

Version: 
1.6.0_24 (Build 100930); platform 100909-1140d3a55456
System: 
Linux (2.6.18-53.1.14.el5) , i386 32bit
Java: 
1.6.0_24; Java HotSpot(TM) Client VM (19.1-b02, mixed mode)

Есть ли что-то, чего мне не хватает.Я новичок во всем этом.

Ответы [ 3 ]

4 голосов
/ 02 мая 2013

Эту ошибку можно устранить с помощью

$ ssh -Y user @ remotemachine

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

$ unzip visualvm_135.zip

$ cd visualvm_135 / bin

$ ./visualvm

Этот экземпляр visualvm будет полнофункциональным, включая выборку памяти и ЦП.

Подробнее об этом здесь: http://shahriarinia.blogspot.com/2013/05/java-cpumemory-heap-usage-monitoring.html

http://mshahriarinia.com/

1 голос
/ 14 августа 2013

Следуя предыдущим ответам, но имейте в виду несколько дополнительных частей для подтверждения:

  1. не может произвести выборку памяти удаленно
  2. использовать X для запуска экземпляра VisualVM с локального в jvm и экспортаDISPLAY обратно на вашу рабочую станцию ​​
  3. есть некоторая неприятная проблема с jdk_1.7.0_25, которая вызывает, по крайней мере, в моем случае под CentOS исключение, возникающее при попытке запустить jvisualvm или загруженный VisualVM:

    java.lang.NoClassDefFoundError: Не удалось инициализировать класс sun.awt.SunToolkit

  4. использовать одну и ту же учетную запись пользователя для запуска вашей целевой JVM (в моем случае сервера Tomcat) и вашего экземпляраVisualVM

Из предыдущего ответа это было полезно (спасибо Мортеза Шахриари Ниа )

$ ssh -Y user@remotemachine
$ wget http://java.net/projects/visualvm/downloads/download/release135/visualvm_136.zip
$ unzip visualvm_136.zip
$ cd visualvm_136/bin
$ ./visualvm

Каждый раз перед запуском "visualvm_136 /bin / visualvm ", верните свой дисплей X на рабочую станцию, которая вам необходима ...

  1. локальный компьютер: $ xhost +
  2. удаленный компьютер: $ export DISPLAY = your_workstation_ip: 0.0

Как только он запустится (и ваша целевая JVM уже запущена, и вы используете ту же учетную запись пользователя, что и в # 4 выше), вы увидите целевой PID, указанный в разделе «Local» VisualVM.

Я смог использовать разные версии jdk и все еще мог видеть включенный сэмплер памяти - в моем случае целевая JVM Tomcat работала с jdk_1.7.0_25, тогда как мой экземпляр VisualVM был более ранней версией jdk_1.7.0_04 (из-запроблема № 3, пришлось использовать другую версию для VisualVM).

Надеюсь, что помогает ...

1 голос
/ 14 сентября 2011

В выборке памяти используется Attach API , которая работает только для локальных приложений, работающих под тем же пользователем, что и VisualVM.Вы можете запустить VisualVM на удаленном компьютере и использовать удаленный сеанс X для отображения вывода на локальном компьютере.

...