2009-04-08 3 views
5

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

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

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

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

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

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

+0

вы читали журналы сервера? – Sergey

+0

Можете ли вы профилировать или контролировать сам tomcat без развертывания вашего webapp, просто запуская «пустой» tomcat? –

+0

То же самое происходит со мной. Может быть, было бы полезно, если бы мы поставили некоторые номера версий того, что мы запускаем, чтобы люди могли искать вопрос? Я пытался развернуть Tomcat 5.5.x, работая как на Java5, так и на Java6. Моя версия Netbeans была 6.5 С другой стороны, импорт моего проекта в Netbeans, а затем запуск профилировщика работал отлично. @sergey К сожалению, не было никакого выхода ни в одном из журналов Tomcat – jklp

ответ

0

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

1

Вы также можете использовать инструмент 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) Запустите визуальную виртуальную машину на локальной машине. a. В удаленной вкладке добавьте удаленный узел. b. Подождите пару минут, и вы увидите, что все экземпляры основных приложений будут отображаться под удаленной вкладкой. c. Нажмите на удаленный узел, затем выберите «Добавить подключения JMX», укажите узел: порт (порт, упомянутый выше в пункте 2.) d. Подождите несколько секунд, вы увидите соединение JMX под удаленным узлом.

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

0

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

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

--kiran.kumar