VisualVM не может профилировать; соединения и другие вкладки работают, но вкладка Sampler выдает:"Не удалось создать соединение JMX"
Я пытаюсь использовать VisualVM для профилирования приложения, работающего в EC2. VisualVM подключается к удаленному компьютеру и показывает мне вкладки Overview, Monitor и VisualGC (с данными), но когда я выбираю вкладку Sampler, я получаю:
Недоступен. Не удалось создать соединение JMX с целевым приложением. Используйте действие "Добавить JMX-соединение", чтобы присоединиться к приложению.
Я попытался добавить соединение JMX (к общему адресу EC2 и порту JMX, с которого было запущено приложение), но безрезультатно.
На вкладке Обзор VisualVM я вижу, что я установил jmxsettings приложения (и, соответственно, VisualVM видит эти настройки):
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
Я использую модель безопасности EC2, которая оставляет все порты открытыми от EC2 до моей локальной машины. Я использую одну и ту же JVM на обеих машинах. Я запустил jstatd на машине EC2.
Не уверен, что еще попробовать.
2 ответа
Вы используете SSL-аутентификацию? Если не хотите его использовать, попробуйте заменить
-Dcom.sun.management.jmxremote.local.only=false
с
-Dcom.sun.management.jmxremote.ssl=false
Брайан,
Вы можете подключиться к порту ECM JMX с вашего локального jvisualvm, не открывая порт EC2 JMX. Я делаю это, используя ssh tunnel. Запустите команду ниже на вашем локальном компьютере:
ssh -i <aws .pem key> ec2-user@<ec2-ip> -v -D 9010
А затем в jvisualvm, зайдите в Сервис -> Параметры -> Сеть и выберите Настройки прокси вручную и введите ниже:
Socks Proxy: localhost Port: 9010
В разделе No Proxy Hosts ничего не оставляйте и нажимайте OK.
Затем выберите localhost и щелкните правой кнопкой мыши Добавить JMX-соединение и введите localhost:9010
и все готово:)