Как профилировать распределенное приложение в Java? - PullRequest
11 голосов
/ 22 апреля 2011

У меня есть приложение, работающее на сетке из одинаковых Java-процессов (возможно, на разных физических машинах).Я хотел бы собрать статистику использования процессора из одного запуска этого приложения.Я перебрал инструменты профилирования в поисках опции автоматического сбора данных, но не смог найти ничего в netbeans, tptp, jvisualvm, yourkit и т. Д.

Может быть, я смотрю не так?

Я думал следующее:

  • запускать процессы в сетке с некоторыми специальными настройками, которые позволяют им выводить информацию о профилировании
  • запускать мое приложение как обычно - оно будет толкатьзадачи в сетку, процессы будут выполнять задачи и публиковать информацию профилирования
  • использует какой-то инструмент для сбора и анализа результатов профилирования

, но я не могу найти ничего, даже отдаленно похожегона это.

Есть мысли, опыт, предложения?

Спасибо!

Ответы [ 8 ]

3 голосов
/ 28 апреля 2011

Если вы разрешили удаленный доступ JMX и используете SUN JDK 1.6, попробуйте использовать jvisualvm.У этого есть опция удаленного соединения JMX.Хотя я не использовал его для профилирования процессора в распределенной среде.

Примечание: Для Профилирование процессора , на котором должно работать ваше приложениеСОЛНЦЕ JDK 1.6 или выше.

enter image description here

Посмотрите эти ссылки:

  1. JVisualVM
  2. JVisualVM - Работа с удаленными приложениями
  3. Получить дамп кучи из удаленного приложения на Java с помощью JVisualVM
  4. Невозможно профилировать JBoss 5 с помощьюjvisualvm
  5. http://www.taranfx.com/java-visualvm
1 голос
/ 04 мая 2011

Я использовал CA Introscope для этого типа мониторинга.Он использует инструментарий для сбора метрик с течением времени.Например, он может быть настроен для предоставления вам представления обо всех узлах и их производительности с течением времени.Из этого представления узлов вы можете перейти к уровню метода, чтобы выяснить, где находятся ваши горловины.

Да, он обеспечит загрузку процессора.

Это коммерческий инструмент $$$, но он отличный инструмент для сбора, мониторинга и опроса данных о производительности.

1 голос
/ 03 мая 2011

Вы можете использовать некоторую библиотеку JMX , например, jmxterm и оберните его в некоторый код, чтобы подключиться к нескольким хостам и опросить их на предмет изменений. Если вы немного знакомы с Python, посмотрите на простой скрипт mys здесь: http://rostislav -matl.blogspot.com / 2011/02 / мониторинг-tomcat-with-jmxterm.html .

1 голос
/ 03 мая 2011

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

Чтобы соответствовать этим временным меткам, все машины должны иметь одинаковое время (максимум 10 миллис дельта)

узлы кластера должны синхронизироваться с сетевым сервером времени (NTP) с одним источником

1 голос
/ 22 апреля 2011

Если вы посмотрите на что-то вроде zabbix (хотя существует множество других инструментов мониторинга), это позволяет собирать данные через JMX из приложения Java. И если вы включите JMX в своем приложении и разрешите его внешний запрос (через TCP / IP), у вас будет доступ ко многим внутренним компонентам горячей точки (свободная память и т. Д.), А также к стекам потоков и т. Д. Затем эти значения можно представить в виде Что ж. Это требует настройки, но то, что вы ищете, не может быть выполнено с помощью одной строки скрипта.

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

Я искал что-то похожее и нашел Hyperic

Заявки - это инструмент, позволяющий отслеживать наиболее распространенные приложения и системы, собирать всю информацию и представлять их в удобной форме.

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

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

Если вы знаете критические пути, которые вы хотите проанализировать, я бы посоветовал проставить время в вашем процессе в ключевых местах и ​​объединить журналы самостоятельно. Скорее всего, это будет полезным дополнением к вашему профилированию, может быть использовано в производстве и может быть еще более полезным в результате. (Это для моего проекта)

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

Я не знаю, дает ли это комбинированное представление о том, что происходит.

0 голосов
/ 29 апреля 2011

http://www.hyperic.com/products/open-source-systems-monitoring

Я никогда не пробовал другие инструменты, упомянутые в других ответах.Я был более чем доволен гиперикой.Он также предоставляет API веб-сервисов, которые вы можете использовать для написания собственных инструментов анализа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...