#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
Примеры:
Ответ №4:
Профилируйте свое приложение с помощью Jprofiler. Ниже приведены шаги по настройке вашего Tomcat с помощью Jprofiler.
- В машине Linux откройте
.bash_profile
файл из/root
каталога.
Введите местоположение jprofiller (используя команду ниже «Экспорт») в.bash_profile file export LD_LIBRARY_PATH=/dsvol/jprofiler6/bin/linux-x86
- Перейдите в каталог установки 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"
- Запустите сервер из папки bin, выполнив
starup.sh
команду
Ответ №5:
Я слышал много хорошего о VisualVM, и вот статья о том, как это сделать удаленно:
Java VisualVM для профилирования удаленного сервера
ИЗМЕНИТЬ: Я написал сообщение в блоге о том, как настроить удаленное профилирование через SSH-туннель здесь:
Комментарии:
1. Это только ссылка. Пожалуйста, добавьте дополнительную информацию в свой ответ
2. VisualVM не поддерживает профилирование памяти на удаленных компьютерах, только профилирование процессора