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

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

Любая идея?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
16 074
5

Ответы 5

у вас есть 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

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

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

Примеры:

Обычно я использую 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 на локальном рабочем столе и подключиться удаленно.

Профилируйте свое приложение с помощью 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

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

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

РЕДАКТИРОВАТЬ: Я написал сообщение в блоге о том, как настроить удаленное профилирование через туннель SSH здесь:

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

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

Himanshu Jansari 08.10.2012 10:50

VisualVM не поддерживает профилирование памяти на удаленных машинах, а только профилирование ЦП.

kjb 15.08.2013 21:40

Другие вопросы по теме