Профиль Tomcat с VisualVM
Я хотел бы профилировать приложение, которое работает на Tomcat с помощью инструмента VisualVM. К сожалению, когда я говорю VisualVM о профиле Tomcat, Tomcat выводит несколько сообщений, указывающих, что он подключается к инструменту профиля, а затем просто выходит.
Подробнее...
Я использую Windows XP, Tomcat 6, VisualVM 1.2.1 и JDK 1.6.0_11.
- В Visual VM я нажимаю правой кнопкой мыши приложение Tomcat и выбираю "Профиль"
- На вкладке "Профайлер" я нажимаю кнопку "Память" (или кнопку ЦП).
- Выход Tomcat
Обратите внимание, что если я щелкнул правой кнопкой мыши приложение Tomcat и выберите "Куча дампа", который, похоже, работает нормально.
Ответы
Ответ 1
У меня есть профилирование VisualVM
работающее с моим приложением Tomcat
. Мне нужно было добавить следующие параметры для запуска Tomcat:
-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Вот хорошая статья о мониторинге Tomcat
с помощью VisualVM
.
Ответ 2
Да, мы делаем профильные приложения 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
Ответ 3
Я использую 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/
Ответ 4
Все, что вам нужно сделать, это установить следующие параметры виртуальной машины:
-XX: + UnlockCommercialFeatures -XX: + FlightRecorder -XX: + UnlockDiagnosticVMOptions -XX: + DebugNonSafepoints -XX: FlightRecorderOptions = stackdepth = 512