Как выполнить профилирование памяти в удаленном веб-приложении java

#java #memory #profiling

Вопрос:

Я знаю, что мы можем использовать такие инструменты, как JProfiler и т. Д. Есть ли какой-нибудь учебник о том, как настроить его для отображения использования памяти только с помощью удаленного мониторинга?

Есть идеи?

Ответ №1:

у вас есть VisualGC, он не очень продвинутый,но вы можете видеть использование памяти вашим приложением (мусор, старый, пермь и т. Д.).

http://java.sun.com/performance/jvmstat/visualgc.html

чтобы возобновить : вы запускаете мониторинг демона на удаленной машине (http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstatd.html, см. параграф безопасности)

 JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy
 

с файлом здесь под названием jstatd.all.policy, содержащим :

     grant codebase "file:${java.home}/../lib/tools.jar" {   
permission java.security.AllPermission;
};
 

на удаленной машине вы получили pid своего приложения для отладки с помощью инструмента jps :

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html#jps

наконец, на вашем локальном компьютере вы запускаете visualgc :

 visualgc the_pid@remote_machine_address
 

Ответ №2:

Я обычно использую YourKit, который является отличным приложением (требуется лицензия).

В вашем сценарии запуска/выключения веб-серверов (catalina.sh для кота) вставил:

 JAVA_OPTS="-Djava.awt.headless=true -agentlib:yjpagent -Xrunyjpagent:sessionname=Tomcat"
 

Вам понадобится ваш файл, уже загруженный и добавленный в путь к вашей библиотеке (я делаю это в catalina.sh также):

 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/yourkit/yjp-6.0.16/bin/linux-x86-32
 

Затем вы можете запустить клиент YourKit на локальном рабочем столе и удаленно подключиться.

Ответ №3:

Вы можете изменить параметры виртуальной машины вашего Java-приложения, чтобы разрешить удаленное профилирование, например -agentlib:jprofilerti=port=25000

Общее объяснение JProfiler.

Примеры:

Ответ №4:

Профилируйте свое приложение с помощью Jprofiler. Ниже приведены шаги по настройке вашего Tomcat с помощью Jprofiler.

  1. В машине Linux откройте .bash_profile файл из /root каталога.
    Введите местоположение jprofiller (используя команду ниже «Экспорт») в

     .bash_profile file
    export LD_LIBRARY_PATH=/dsvol/jprofiler6/bin/linux-x86
     
  2. Перейдите в каталог установки Tomcat. Откройте catalena.sh файл из bin папки.
    Введите нижеприведенные сведения в catelana.sh файл (по умолчанию вы можете найти только информацию о красном цвете и черном цвете в catalena.sh файл).

     export JPROFILER_HOME
    JAVA_OPTS="-Xms768m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF8 -agentpath:/opt/Performance/jprofiler7/bin/linux-x86/libjprofilerti.so=port=8849 $CATALINA_OPTS"
     
  3. Запустите сервер из папки bin, выполнив starup.sh команду

Ответ №5:

Я слышал много хорошего о VisualVM, и вот статья о том, как это сделать удаленно:

Java VisualVM для профилирования удаленного сервера

ИЗМЕНИТЬ: Я написал сообщение в блоге о том, как настроить удаленное профилирование через SSH-туннель здесь:

http://kamilmroczek.com/2012/11/16/168787859/

Комментарии:

1. Это только ссылка. Пожалуйста, добавьте дополнительную информацию в свой ответ

2. VisualVM не поддерживает профилирование памяти на удаленных компьютерах, только профилирование процессора