Как я могу контролировать Tomcat с помощью jvisualvm, показывая visualgc?

Я дважды проверил следующее:

  • Я запускаю jvisualvm на том же компьютере, где работает Tomcat.
  • Это Ява 6u19.
  • Моя служба Tomcat работает под тем же пользователем, под которым я вошел в систему.
  • Мой сервис Tomcat использует тот же самый каталог JVM, из которого я использую jvisualvm.
  • Tomcat включил JMX для определенного порта, но я не думаю, что это мне поможет.

При всем этом я действительно вижу свой процесс Tomcat в списке «Локальные» для jvisualvm. Он отображается как «‹Неизвестное приложение> (pid 5644)». Если я дважды щелкну по нему, то на каждой вкладке появится сообщение «Не поддерживается для этой JVM». Однако VisualVM отображается как «Локальный», и для него работают все вкладки, очевидно, с использованием одного и того же экземпляра JVM. Не существует очевидного способа добавить соединение JMX к экземпляру «‹Unknown Application>».

Я вижу экземпляр JMX Tomcat в «Local» как «localhost: (мой номер порта)», и это работает, но на вкладке Visual GC отображается «Не поддерживается для этой JVM», что, как я предполагаю, означает, что Visual GC не поддерживает работа через JMX.

Что я делаю неправильно? Я попытался запустить jstatd. Это не имело никакого значения. Когда я запускаю jstatd, тогда visualvm видит «локальный» «jstatd», но когда я дважды щелкаю по нему, кажется, что он просто отслеживает этот процесс jstatd, а не какой-либо другой процесс Java.

ПРИМЕЧАНИЕ. Я решил попробовать запустить Tomcat не как сервис, а прямо в окне CMD, и, альт, теперь visualvm работает отлично. Я подумал, что попробую это, когда я запустил «jps» и получил жалобу «информация о процессе недоступна», погуглил для этого и нашел кого-то, кто сказал, что они получили это, когда запускали любое приложение Java в качестве службы. Это помогает на испытательном стенде, но не помогает понять, как контролировать производственную систему.

Это Tomcat, работающий как служба Windows под оболочкой Tanuki на Windows Server 2003.


person Eddie    schedule 05.08.2011    source источник


Ответы (1)


Из вашего описания ясно, что Jvmstat каким-то образом не работает. Jvmstat используется Visual GC, jps и VisualVM. Причина, по которой вы видите свой Tomcat как нераспознанное приложение в узле «Локальный», означает, что VisualVM обнаружил (через jvmstat), что запущено приложение Java, но не может получить о нем какие-либо данные. Это может быть как-то связано с тем, что вы запускаете свой Tomcat как службу Windows. Вы можете попробовать выйти из всех java-приложений и удалить каталог hsperfdata_{your_user_name}, который находится в каталоге %TMP%, и перезапустить Tomcat и VisualVM. Если Tomcat правильно распознается в узле «Локальный», Visual GC тоже будет работать. Если это не удается, запустите Tomcat и запустите jps с помощью:

jps -J-Djps.debug=true -J-Djps.printStackTrace=true

и опубликовать вывод. Это может показать нам, почему jvmstat не может считывать информацию с Tomcat.

person Tomas Hurka    schedule 07.08.2011