2008-09-16 3 views
4

Кто-нибудь использовал новый инструмент Java 1.6 JDK, VisualVM, чтобы профилировать производственное приложение и как приложение работает при профилировании?Java 1.6 JDK tool, VisualVM

Документация утверждает, что она предназначена для использования как в производстве, так и в разработке, но, основываясь на предыдущем опыте профилирования, с другими инструментами профилирования, я колеблюсь.

ответ

5

Хотя я лично не использовал VisualVM, я видел это blog post только сегодня, у вас может быть полезная информация. Он рассказывает о профилировании производственного приложения, используя его.

1

Я попробовал его в dev-блоке и обнаружил, что когда я выключу профилирование, это неожиданно закроет Tomcat. Я бы очень осторожен в том, чтобы перевести это на производство - вы можете имитировать нагрузку в промежуточной среде? Это не так хорошо, как реальная вещь, но это, вероятно, не заставит вас уволить, если это пойдет не так ...

0

Возможно удаленное подключение к вашему серверу с другого компьютера с помощью VisualVM. Вам просто нужно щелкнуть правой кнопкой мыши на узле «Удаленный» и сказать «Добавить удаленный хост».

Это, по крайней мере, устранит накладные расходы VisualVM (если таковые имеются) от воздействия производительности во время работы.

Это может не устранить все проблемы с производительностью, особенно в производственных средах, но это поможет немного.

1

Я использовал VisualVM раньше, чтобы профайл что-то работает локально. Большая победа заключалась в том, что я просто запускаю ее, и она может подключаться к работающей JVM. Это проще в использовании, чем другие инструменты профилирования, которые я использовал раньше, и, похоже, не так много накладных расходов.

Я думаю, что это выборка. Накладные расходы на приложение, интенсивно использующее процессор, не выглядели значимыми. Я ничего не измерял (меня интересовало, как мое приложение выполнялось, а не как инструмент выполнял), но у него определенно не было фактора замедления 10, который я привык видеть из профилирования.

0

Я использовал профилировщик Net Beans, который использует те же подкрепления, что и Visual VM.

Я работал с более старой версией Weblogic, что означало использование 1.5 JVM, поэтому я не мог использовать динамическое приложение. В приложении, которое я профилировал, было несколько тысяч классов, и моя рабочая станция была в значительной степени непригодна, а профилировщик - все. После того, как инструментарий был завершен, система была вялой, но не полностью непригодной для использования. Количество замедлений действительно зависит от того, что вам нужно захватить. Основные показатели процессора довольно легкие. Профилирование памяти значительно замедляет работу.

Я бы не использовал его в производственной системе. Помимо возможности замедления, в конечном итоге у меня закончилось пространство PermGen, потому что профайлер реинсталляции и перезагрузки классов при изменении настроек. (Это может быть исправлено в 1.6-агенте, я не знаю)

1

Для простого наблюдения за вашим приложением, запуск VisualVM удаленно не должен сильно замедлять его. Если система не находится на краю коллапса, я все еще не вижу никаких проблем. Это в основном просто считывание информации из крупнозернистого встроенного инструментария JVM. Однако, если вы начнете профилирование, у вас будут те же проблемы, что и с другими профайлерами. В основном потому, что все они работают почти одинаково, часто используя поддержку в JVM.

У многих людей есть проблемы с запуском VisualVM удаленно из-за проблем с брандмауэром, но вы можете даже запустить Visual VM remotely over ssh с некоторыми установленными свойствами системы.

+0

В блоге добавлена ​​дополнительная информация о запуске Jstatd. – hennings 2009-11-12 13:50:33

0

Я использую VisualVM с тех пор, прежде чем он был включен в JDK. Это оказывает неоценимое влияние на производительность системы. Я никогда не замечал, что это вызывает проблемы с производительностью в системе, но опять же, на нашем Java-сервере хватило времени на то, чтобы поддержать небольшую дополнительную нагрузку. Если ваш сервер работает на уровне, который полностью завершен и не может работать с VisualVM, то я бы сказал, что его более вероятно, что вам нужно купить другой сервер. У любого производственного сервера должен быть некоторый запас памяти, иначе у вас есть катастрофа, которая только и ждет.

0

Я использовал VVM (VavaVoom?) Довольно широко, работает как шарм в световом режиме, то есть без профилирования, просто получая основные данные от виртуальной машины. Но как только вы начинаете профилирование и есть много классов, то происходит значительное замедление. Я бы не стал профилем в производственной среде, даже если у вас есть 128 базовых плат с 2 терафами памяти только потому, что перезагрузка и переопределение классов сложны, серверные загрузчики классов - это еще одна вещь, также варьируются от одной реализации сервера к другой , мешать им в производстве не очень хорошая идея.

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