2013-05-22 3 views
1

VisualVM/VisualGC предоставляет довольно много полезных метрик GC в режиме реального времени, но мне нужен инструмент командной строки, который может подключаться к удаленному приложению через jstatd и записывать в CSV или XML идеально точно такие же показатели, как и в VisualGC. Не должно быть проблем писать самостоятельно, но с первого взгляда я не могу найти, какой протокол использует visualvm/jstatd.консольный клиент для jstatd/visualgc

Как я понимаю, VisualGC не является открытым исходным кодом: https://stackoverflow.com/questions/11096466/where-is-the-source-code-repository-for-visualgc, но есть ли альтернативные инструменты с открытым исходным кодом? Есть ли какие-то подсказки о том, как использовать протокол?

Мне удалось подключиться к jstatd через RMI (порт по умолчанию 1099, JStatRemoteHost - это имя rmi), может подключаться к конкретной виртуальной машине, но http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/jvmstat/monitor/remote/RemoteVm.java#RemoteVm - довольно очень низкоуровневый интерфейс с jstatd.

Я проверил исходный код VisualVM от https://svn.java.net/svn/visualvm~svn/trunk и только начал смотреть на кодовую базу 5mb, однако он не использует ни RemoteHost, ни RMI-классы RemoteVm.

Спасибо.

ответ

1

Сначала я смотрел на исходном коде VisualVM (~ 5mb), создал инструмент командной строки, которая регистрирует JvmstatModelProvider на JvmstatModelFactory, получает приложение, создает JvmJvmstatModel и извлекают все MonitoredValues ​​- он подключается к удаленному приложению через jstatd и печатает измененные значения в формате timeMillis, имя, значение 1369270235646, sun.gc.generation.2.space.0.proacity, 16777216 1369270236666, sun.os.hrt.ticks, 2511500491 1369270237581, sun.gc.generation.0 .space.0.used, 641408 1369270237582, sun.os.hrt.ticks, 2512502544

Через час я нашел правильный инструмент командной строки для моей задачи https://code.google.com/p/hatter-source-code/wiki/hotstat, что не используйте jstatd - но отлично, я все равно могу запустить его удаленно через ssh.

Смежные вопросы