Профиль Приложения Tomcat С VisualVM


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

Подробнее...

Я использую Windows XP, Tomcat 6, VisualVM 1.2.1 и JDK 1.6.0_11.

  1. в Visual VM я нажимаю Правой Кнопкой Мыши на приложение Tomcat и выбираю "профиль"
  2. в Вкладка профилировщик, я нажимаю кнопку памяти (или кнопку процессора).
  3. Tomcat выходит

обратите внимание, что если я щелкните правой кнопкой мыши на приложении Tomcat и выберите "дамп кучи", который, кажется, работает нормально.

4 60

4 ответа:

Я VisualVM профилирование работа с my Tomcat приложение. Мне нужно было добавить следующие параметры для запуска tomcat:

-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

вот хорошая статья мониторинг Tomcat С VisualVM.

Да мы профилируем приложения Tomcat.

на catalina.bat или catalina.sh и это в ваш JAVA_OPTS (я использую Tomcat 6.0.16):

-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

код JAVA_OPTS должен выглядеть как

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

Обновлено после комментария Райана, что лучше использовать setenv.sh. Это мой setenv.sh для JDK 8. Отсутствует несколько других настроек, но хорошо для начала.

SUN_JVM_OPTS="
    -server \
    -XX:MaxMetaspaceSize=3G \
    -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \
    -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \
    -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark \
    -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=2M \
    -XX:+HeapDumpOnOutOfMemoryError \
    -Dsun.net.inetaddr.ttl=60 \
    -Dcom.sun.management.jmxremote  \
    -Dcom.sun.management.jmxremote.port=8480 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ssl=false"


# Set custom application options here
APPLICATION_OPTS="-Dlog4j.configurationFile=patht-to-log/log4j2.xml -Dlog4j.debug=true "

JVM_OPTS="$GENERAL_JVM_OPTS $SUN_JVM_OPTS"
CATALINA_OPTS="$JVM_OPTS $APPLICATION_OPTS"
echo "Tomcat started with settings "$CATALINA_OPTS

как только вы уроните setenv.sh в папку bin, вы можете увидеть изменения в консоли запуск.

вот еще один пошаговый учебник для профилирования приложений Tomcat с помощью Visual VM: производительность приложения для устранения неполадок с помощью Visual VM

Я использую Tomcat 7 и полная конфигурация требует больше параметров для работы.

-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=9090 # port to connect JMX 
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=50.112.22.47" # IP of the server running tomcat (it is necessary)

источник: http://blog.markshead.com/1129/connecting-visual-vm-to-tomcat-7/

все, что вам нужно сделать, это установить эти параметры VM:

- XX: + UnlockCommercialFeatures-XX:+FlightRecorder-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-XX: FlightRecorderOptions=stackdepth=512