Можно ли взять дамп потока с Tomcat? Я хотел бы отслеживать потоки, запущенные в Tomcat в определенный момент времени.
Примечание. Я делал это с помощью веб-логики, но не знаю, как это можно сделать на Tomcat.
Можно ли взять дамп потока с Tomcat? Я хотел бы отслеживать потоки, запущенные в Tomcat в определенный момент времени.
Примечание. Я делал это с помощью веб-логики, но не знаю, как это можно сделать на Tomcat.
Если вы используете Linux, вы можете отправить kill -3 [pid вашего кота], и он выгрузит все текущие потоки в файл catalina.out.
catalina.out
- person Boris Treukhov; 13.11.2013
Есть простой способ отслеживать потоки tomcat и делать дамп. Запустите tomcat со следующими параметрами Java:
-Dcom.sun.management.jmxremote.port=<some free port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
После перезапуска tomcat вы можете просто запустить jconsole (часть jdk) или visualvm и создать новое подключение jmx к порту, который вы выбрали выше.
В обоих инструментах у вас также есть возможность сделать дамп ;)
!!!Но делайте это только в закрытой/защищенной среде - так как не установлена аутентификация.!!!
добавьте java-мелодию на свой сервер https://code.google.com/p/javamelody/
это дает вам много информации, включая потоки во время выполнения
Следующие шаги должны помочь вам запустить текущие потоки Java и проанализировать их:
root@localhost:~# sudo -u $TOMCAT_USER $JAVA_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
Примечание. Замените $JAVA_HOME
на свой путь к текущему JDK, $TOMCAT_USER
на пользователя, работающего с Tomcat; если вы передадите не того пользователя или даже используете root, вы получите такую ошибку:
3047: well-known file is not secure
Пожалуйста, попробуйте профайлер netbeans для профилирования любых веб-приложений.
https://profiler.netbeans.org/
http://wiki.netbeans.org/FaqProfilerAttachRemoteServer