Как получить сброс потока Jetty? - PullRequest
4 голосов
/ 19 мая 2011

У меня есть Ubuntu Server 10.10, 64-битный , на котором запущено веб-приложение на Jetty 6.1.24-6 на Sun JVM , оба установлены из стандартного Ubuntuрепозитории.

Я пытаюсь отследить проблему с этим сервером (100% процессор через некоторое время, это может быть связано с известной ошибкой в ​​селекторе NIO, хотя похоже, что изменение коннектора на старый IOSocketConnector не решил проблему!), И мне нужно получить дамп потока.

К сожалению, я не могу получить дамп потока.Я пытался отправить SIGQUIT процессу и пытался присоединить к нему JStack , но ни один из подходов не работает.

Я не вижу никакого вывода изSIGQUIT (в любом из файлов журналов, сгенерированных Jetty) и JStack, даже если они запускаются с правами root (или jetty) и с «-F», говорят, что они были присоединены к процессу, но затем блокируют и больше не выводят!

Как получить дамп потока?

Ответы [ 2 ]

6 голосов
/ 20 февраля 2013

Вы должны сделать это от имени того же пользователя, на котором запущен процесс Jetty. В Ubuntu этот пользователь обычно называется jetty.

Так что попробуйте

sudo -u jetty jstack <pid>

это отправит дамп потока на стандартный вывод (ваша оболочка).

Вы также можете

sudo -u jetty kill -QUIT <pid>

, который отправит дамп потока на стандартный вывод Jetty (обычно /var/log/jetty/out.log)

Чтобы получить pids, используйте команду jps или ps ax|grep java

0 голосов
/ 19 мая 2011

вы пробовали VisualVM (/ usr / lib / java-6-sun / bin / jvisualvm) с удаленным подключением? Может захватывать дамп потока

...