Как сделать профилирование памяти на удаленном веб-приложении Java - PullRequest
3 голосов
/ 11 октября 2008

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

Есть идеи?

Ответы [ 5 ]

8 голосов
/ 11 октября 2008

у вас есть 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
7 голосов
/ 23 октября 2008

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

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

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

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

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

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

3 голосов
/ 23 октября 2008

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

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

Примеры:

1 голос
/ 07 декабря 2011

Профилируйте ваше приложение, используя 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

0 голосов
/ 08 октября 2012

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

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

EDIT : Я написал сообщение в блоге о том, как настроить удаленное профилирование через туннель SSH здесь:

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

...