Использование профилировщика Netbeans 6.5 для профилирования удаленного веб-приложения? - PullRequest
5 голосов
/ 08 апреля 2009

У меня проблемы с использованием профилировщика Netbeans 6.5 для удаленного профилирования использования памяти веб-приложением Java.

Я выполнил шаги, описанные в учебнике , и смог настроить экземпляр Tomcat для запуска с агентами профилирования. Я также могу подключить профилировщик Netbeans к работающему серверу: в течение нескольких секунд профилировщик показывает графики использования памяти сервером.

Однако я не могу запустить развернутое веб-приложение. Через несколько секунд сервер корректно завершает работу, как будто он просто достиг дна своего метода main (вряд ли ожидаемое поведение веб-сервера).

В течение этих секунд сервер не отвечает, и я не могу подключиться к веб-приложению в нем, они просто не развернуты.

Я не хочу импортировать свое приложение в новый проект Netbeans только для его профилирования. Возможно профилировать удаленное приложение без доступа к его источнику, верно? В конце концов, в течение нескольких секунд сервер работал и профилировался.

Я хочу профилировать веб-приложение в Netbeans 6.5. Что я забыл?

Ответы [ 3 ]

1 голос
/ 07 февраля 2011

Вы также можете использовать инструмент VisualVM. Выполните следующие шаги.

1) Запустите jstatd (процесс демона jstat) (Запустите на удаленной машине, на которой запущено приложение) jstatd -p 1098 -J-Djava.security.policy = tools.policy (указать неиспользуемый порт), если файл tools.policy не указан, создать его следующим образом.

tools.policy 
grant codebase "file:${java.home}/../lib/tools.jar" {

разрешение java.security.AllPermission; };

2) Также укажите следующие свойства перед запуском JVM.

#JMX property
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote=true"
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.port=10992"
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.authenticate=false"
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.ssl=false"

3) Запустите визуальную виртуальную машину на локальном компьютере. а. Под удаленной вкладкой добавьте удаленный узел. б. Подождите пару минут, вы увидите, что все основные приложения будут видны на удаленной вкладке. с. Нажмите на удаленный узел, затем выберите Добавить JMX-соединения, укажите узел: порт (порт, упомянутый выше в пункте 2.) д. Подождите несколько секунд, вы увидите соединение JMX под удаленным узлом.

4) Через несколько секунд вы увидите новую вкладку под удаленным узлом. Дважды щелкните на удаленном_узле: 10992, вы увидите таблицу профилей с правой стороны. Вы можете увидеть детали памяти, процессора, потока и т. Д.

0 голосов
/ 23 февраля 2011

Проверьте версию jvm. Версия, используемая netbeans, должна быть такой же, как и в Tomcat. Используйте порты по умолчанию. Если вы изменили какие-либо порты, убедитесь, что они выше 1024. Попробуйте профилировать пример приложения в tomcat (удалите все остальные приложения). Если он работает успешно, это означает, что есть ограничение памяти. Профилирование требует огромной памяти. используйте -xms1024m -xmx1024m для кота. Если все остальное потерпит неудачу. подумайте о переходе на JDK6 и Tomcat 6. После многих испытаний я обнаружил, что в jdk5 и tomcat5 есть много ограничений. переход на tomcat6 и jdk6 решил проблему для меня.

Профилирование с NetBeans не работает Jrockit, IBM JDK и т. Д ..

- kiran.kumar

0 голосов
/ 03 ноября 2009

Профилируете ли вы весь веб-сервер или вы использовали фильтр профилирования для профилирования только вашего пакета? Решить эту проблему может уменьшение взаимодействия между профилировщиком и самим сервером приложений.

...