2011-10-24 3 views
13

Я новичок в Java, и мне грозит проблема подключения удаленного хоста к JVisualVM.Не удалось подключить удаленный хост к VisualVM

Я искал Интернет и следил за всеми описанными здесь шагами, но до сих пор не могу решить проблему. Шаги я последовал являются:

  1. Я начал jstatd на удаленном сервере, сначала создав jstatd.all.policy файл в $JAVA_HOME/bin. Файл содержал: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

  2. Я начал Jstatd в jstatd -J-Djava.security.policy=jstatd.all.policy

  3. Я начал приложения Java на удаленном хосте:

    java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name 
    
  4. Затем я начал в качестве экземпляра JVisualVM на мой локальный компьютер, и когда я добавил удаленный хост, он подключился, но я не смог увидеть ни один из процессов Java.

Может ли кто-нибудь помочь мне в этом.

Спасибо.

+0

это более просто просто изменить свой вопрос ... – davorp

ответ

5

Для подключения к удаленному VM вы должны начать, что удаленный VM с определенными параметрами:

java 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9000 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
class 

После того, как VM запускается, перейдите в VisualVM и сделайте следующее:

  1. Файл -> Добавить JMX соединение
  2. Тип: yourHostName: 9000 и нажмите OK
  3. Слева у вас будет добавленное соединение JMX, дважды щелкните по нему, и все!

Более подробная информация о Java мониторинга и управления платформой можно найти here.

+0

я выполнил приложение Java, используя шаги, которые вы упомянули, но его все еще не показывает каких-либо процессов Java под удаленный хост я добавил. Когда я пытаюсь добавить jmx-соединение, он дает следующую ошибку в файле журнала: ** connect (service: jmx: rmi: /// jndi/rmi: //10.88.36.146: 9000/jmxrmi) java.net.ConnectException : Соединение отклонено: ** – rushi

+0

проверить брандмауэр на обеих машинах ... возможно, трафик через порт 9000 не разрешен ... – davorp

+0

Я отключил межсетевой экран на своем локальном компьютере, а настройки IP-таблицы на удаленном хосте: ' Цепочка INPUT (политика ACCEPT) target prot opt ​​source destination Цепочка FORWARD (policy ACCEPT) target prot opt ​​source destination Цепочка OUTPUT (политика ACCEPT) target prot opt ​​source destination' – rushi

12

У меня возникли подобные проблемы при подключении к серверу приложений Glassfish. См решения, которые работали для меня, как они могут быть одинаковыми для вас: установка

  • Try на приложение:

    -Djava.rmi.server.hostname = * Remote_Server_External_IP_Address *

Указанный IP-адрес должен быть внешним IP-адресом сервера (может звучать глупо, но это сработало для меня). Основная проблема в моем случае была JMX, указывающая на localhost и цикл. В конфигурационных файлах точный IP-адрес должен быть установлен на удаленный хост.Я описал его как «Проблема 2» В my blog: handling connection problems

  • Если блок Firewall является проблемой, то я рекомендую попробовать Xming с SSH туннель (который прост в установке). Вот инструкция, если у вас возникли проблемы с настройкой:
    Remote use of VisualVM with Xming (my blog) Самое большое преимущество использования XMing в том, что он будет работать почти всегда, когда SSH включен. Вам просто нужно разместить файлы VisualVM на удаленном хосте и запустить его из командной строки. XWindow покажет окно VisualVM на локальном компьютере.

  • Есть вероятность, что это проблема VisualVM - попробуйте использовать какой-либо другой инструмент, чтобы проверить, что не так. Я рекомендую JConsole. Он работает аналогично VisualVM, и я также описал подробности о my blog

+0

Это решение сработало для меня. Спасибо. – Dejas

8

Вы должны начать jstatd с дополнительным параметром, который указывает на внешний IP или имя хоста сервера:

statd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=my_server_ip/hostname 

Ответ на основании: https://java.net/projects/visualvm/lists/users/archive/2010-03/message/8

+0

Спасибо, 'java.rmi.server.hostname', что, наконец, заставило его работать на меня. –

0

Вот шаги, чтобы сделать это:

  1. запуска ejstatd на удаленном хосте в этом каталоге (в папке ejstatd): mvn exec:java -Djava.rmi.server.hostname=<remote_host_name> -Dexec.args="-pr 1099 -ph 1100 -pv 1101" (используется для подключения типа «jstatd») (укажите только -Djava.rmi.server.hostname, если имя хоста вашего удаленного узла не совпадает с именем, которое вы видите в вашей локальной сети)
  2. Запустите приложение Java с дополнительными параметрами Java: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1102 -Dcom.sun.management.jmxremote.rmi.port=1102 -Djava.rmi.server.hostname=<remote_host_name> (используется для подключения типа «JMX») (такое же замечание, как и предыдущий пункт для -Djava.rmi.server.hostname)
  3. Откройте эти 4 порта на удаленном хосте и сделайте их доступными для вашей локальной машины : 1099, 1100, 1101 и 1102
  4. Запуск JVisualVM
    1. Щелкните правой кнопкой мыши на «Удаленный»> «Добавить удаленный хост ...» и введите имя удаленного хоста в «Имя хоста» (если вы не используете порт 1099, вы можете изменить его в «Дополнительно» Настройки «)
    2. правой кнопкой мыши на удаленном хосте вы только что создали>„Добавить JMX Connection ...“и введите» <remote_host_name>:1102 "в„подключение“вход и проверьте,„не требуется подключение SSL“
    3. Ваш Java-процесс появится дважды: один из типа подключения «jstatd» и один из типа соединения «JMX».

Отказ от ответственности: Я автор открытого исходного кода ejstatd инструмента.

0

Начало jstatd в nohup на сервере, который необходимо контролировать и подключить VisualVM к jstatd порту, следующие ниже шаги:

Шаг 1: Создать start-jstatd.sh и скопируйте приведенный ниже содержание:

nohup jstatd -p 1099 -J-Djava.security.policy=<(echo 'grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};') & 

Шаг 2: Предоставить исполнительный разрешение файла:

$ chmod a+rwx start-jstatd.sh 

Шаг 3: Начало jstatd:

$ sh start-jstatd.sh 

Шаг 4: Добавить удаленный хост в VisualVM:

enter image description here

Шаг 5: Добавить JMX Подключение к Удаленный хост, как показано на рисунке ниже, и нажмите кнопку OK: enter image description here