Дамп потока Tomcat

Можно ли взять дамп потока с Tomcat? Я хотел бы отслеживать потоки, запущенные в Tomcat в определенный момент времени.

Примечание. Я делал это с помощью веб-логики, но не знаю, как это можно сделать на Tomcat.


person Abdullah    schedule 02.09.2013    source источник


Ответы (5)


Если вы используете Linux, вы можете отправить kill -3 [pid вашего кота], и он выгрузит все текущие потоки в файл catalina.out.

person Julien    schedule 02.09.2013
comment
Я хотел бы добавить, что это, вероятно, будет catalina.out - person Boris Treukhov; 13.11.2013
comment
Действительно хорошее дополнение. - person Julien; 13.11.2013
comment
Лучший ответ здесь: stackoverflow.com /вопросы/4876274/ - person arun; 09.01.2015

Есть простой способ отслеживать потоки 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 к порту, который вы выбрали выше.
В обоих инструментах у вас также есть возможность сделать дамп ;)

!!!Но делайте это только в закрытой/защищенной среде - так как не установлена ​​аутентификация.!!!

person Patrik Bego    schedule 29.10.2013

добавьте java-мелодию на свой сервер https://code.google.com/p/javamelody/

это дает вам много информации, включая потоки во время выполнения

person olexii    schedule 02.09.2013

Следующие шаги должны помочь вам запустить текущие потоки Java и проанализировать их:

  1. Загрузите IBM JCA, который является хорошим анализатором дампа потока, с IBM Thread & Dump Monitor Analyzer
  2. Выполните следующее, чтобы получить дамп потоков Tomcat: root@localhost:~# sudo -u $TOMCAT_USER $JAVA_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
  3. Откройте дамп потоков с помощью IBM Thread & Dump Monitor Analyzer

Примечание. Замените $JAVA_HOME на свой путь к текущему JDK, $TOMCAT_USER на пользователя, работающего с Tomcat; если вы передадите не того пользователя или даже используете root, вы получите такую ​​ошибку:

3047: well-known file is not secure
person Guido Medina    schedule 07.11.2013

Пожалуйста, попробуйте профайлер netbeans для профилирования любых веб-приложений.

https://profiler.netbeans.org/

http://wiki.netbeans.org/FaqProfilerAttachRemoteServer

person Prabhakaran Ramaswamy    schedule 02.09.2013