VisualVM не может сэмплера памяти
У меня есть экземпляр tomcat с параметром JMXRemote. Локальный VisualVM может получить пробоотборник на CPU, но не для памяти. Кнопка памяти неактивна с кратким высказыванием: "Выборка памяти: недоступна. Не удается подключиться к целевому приложению. Убедитесь, что приложение запущено на поддерживаемых JDK 6 или JDK 7"
Параметр JMXRemote:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Версия Tomcat JDK:
JDK1.6.0.30
Версия VisualVM:
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
Версия Tomcat:
Tomcat 6.0.32
Я запускаю как VisualVM, так и Tomcat на win server 2008. Что-нибудь я сделал не так?
Ответы
Ответ 2
Это сообщение в блоге заставляет меня думать, что временные каталоги JVisualVM и Tomcat должны быть одинаковыми для выборка памяти для работы. Один из комментариев к сообщению:
каталог temp должен быть установлен на тот, который используется JVisualVM, который можно открыть с вкладки свойств системы VisualVM (java.io.tmpdir). Как только я правильно установил каталог CATALINA_TMPDIR, это сработало красиво.
Ответ 3
Я бы проверял, что версия VisualVM точно такая же, как JVM.
VisualVM очень специфична для версии. Я предполагаю, что он все еще находится в довольно быстром развитии.
(Re опубликовано как ответ, поскольку это может быть решение)
Ответ 4
У меня возникли аналогичные проблемы с JVisualVM, я даже задал вопрос об этом здесь
Несколько советов/советов:
- Итак, для выборки памяти вам не нужны параметры jmx.
-
Я бы дважды проверил, установлены ли у вас 64-битные jvms вместе с 32-разрядными jdks на одном компьютере (даже если они не запущены и все правильно настроенные vars), я где-то читал, что иногда он заставляет JVisualVM сумасшедшим:) (да, я знаю, что это не кажется разумным для нас, разработчиков java)
-
Если это не работает, просто удалите все jdks, которые у вас есть, и установите только 1, что вам нужно. Это может решить проблему.
Я надеюсь, что это поможет вам решить проблему, ведь Питер, как говорят, новые и развивающиеся.
Ответ 5
Вот мое решение для аналогичной проблемы: fooobar.com/questions/207700/...
Вы можете решить эту ошибку с помощью
$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
Ответ 6
Убедитесь, что ваш VirtualVM/JDK является 32-разрядной копией, если ваша JRE. Если вы используете Eclipse, проверьте выбранную JRE на разделе Установленная JRE.
Ответ 7
И у меня такая же проблема.
Я всегда запускал tomcat в качестве сервиса и подключал его с помощью visualvm через jmx-соединение.
Когда исправили 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
и запустил его с помощью startup.bat, visualvm автоматически определяет tomcat, и выборка памяти активна.
Ответ 8
У меня такая же проблема, но с другой окружающей средой. Мой сервер был машиной Linux, клиент - машиной Windows 7, но проблема такая же.
Решение заключалось в том, чтобы запустить jvisualvm на том же компьютере и с тем же пользователем, который запускает целевое приложение. Если я запустил jvisualvm с другим другим пользователем (например: root), кнопка памяти стала серым.