мониторинг java-приложений (5) - инструмент визуального мониторинга

Java

tags: java, troubleshooting, monitor,jvisualvm,jconsole


В одном предложении: собственные инструменты мониторинга jdk jconsole и jvisualvm могут более удобно и интуитивно отслеживать производительность приложений Java.Ниже поясняется, как их использовать.

1. Введение

В предыдущих статьях (см. «Полезные материалы» ниже) были представлены инструменты командной строки jdk, но они относительно неинтуитивны в использовании и, как правило, должны использоваться на компьютере. Есть ли более удобный и интуитивно понятный способ их использования? для мониторинга java-приложений? Фактически, сам jdk уже предоставляет инструменты с графическим интерфейсом для мониторинга Java, которыеjconsoleиjvisualvm, функции и использование этих двух инструментов описаны ниже.

2 использование jconsole

jconsole — это встроенный анализатор производительности Java для jdk.Он расположен в каталоге bin каталога установки JDK.Под Windows его можно запустить из командной строки (jconsole.exe) или дважды щелкните файл jconsole.exe, чтобы запустить его. Заинтересованные читатели могут обратиться к инструменту jconsole.Официальная документация:https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html

2.1 Два способа подключения

При запуске jconsole предоставляет два метода подключения, а именно подключение к локальному процессу и подключение к удаленному процессу. Он будет напрямую перечислять локальный процесс Java для выбора. Если вам нужно отслеживать удаленный процесс Java, проверьте удаленный процесс, а затем введите:. Это требует установки параметров удаленного подключения JMX при запуске удаленного процесса Java, иначе он не может быть подключен.Чтобы узнать о технологии удаленного подключения JMX, вы можете обратиться кофициальная статья(https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html) параметры следующие:

# 需要监控的服务器IP
-Djava.rmi.server.hostname=192.168.222.10

# 提供监控的java进程端口
-Dcom.sun.management.jmxremote.port=9004 

# 指定后续的通讯端口,与上面一致
-Dcom.sun.management.jmxremote.rmi.port=9004 

# 不使用ssl登录,若有安全需求,可设置
-Dcom.sun.management.jmxremote.ssl=false 

# 不验证,若有安全需求,可设置
-Dcom.sun.management.jmxremote.authenticate=false 

Как показано ниже:

Обратите внимание, что, поскольку не используетсяssl, появится сообщение «Небезопасное соединение», просто нажмите на него.

2.2 Использование функции jconsole

После запуска и подключения java-процесса интерфейс jconsole относительно прост, разделен на 6 модулей:

  • Обзор: общий обзор процесса Java, включая кучу, количество потоков, класс, линейный график изменений использования ЦП.
  • Память: отображение информации об использовании кучи и некучи памяти, аналогично jmap и jstat.
  • Поток: отображение информации об использовании потока, аналогично jstack.
  • class: показать информацию о загрузке класса
  • Сводка по виртуальной машине: отображает информацию о JVM, аналогичную jinfo.
  • MBeans: отображение информации о MBeans (используется реже)

2.2.1 Обзор

В обзоре в основном отображается линейный график изменений в куче, количестве потоков, классе и использовании ЦП. По сути, вы можете просмотреть обзор приложения непосредственно на основе линейного графика. Если куча занимает много памяти, много активных потоков и уровень загрузки ЦП очень высок, вы можете напрямую перейти в соответствующую область, чтобы увидеть подробности, чтобы найти причину. Кроме того, щелкните правой кнопкой мыши соответствующий график, чтобы экспортировать данные в файл csv для анализа. Как показано на рисунке:

2.2.2 Память

Память является ключевой областью нашего мониторинга.Вы можете ссылаться на память кучи, память без кучи, состояние пула памяти, время и время GC, а также вы можете вручную выполнить GC для просмотра изменений памяти. Как показано ниже:

Среди них вы можете выбрать, какие изменения памяти (куча, не куча, старая область, область eden, оставшаяся область, область метапространства и т. д.) для просмотра в верхней части графика, или вы можете вручную выполнить GC для просмотра изменений . Под рисунком отображаются объем памяти и размер использования, количество сборщиков мусора и время использования, а изменения кучи и не кучи отображаются в виде гистограммы. Поэтому для проблем переполнения памяти и OOM данные мониторинга здесь очень подходят.

2.2.3 Поток

Для онлайн-приложений основными причинами длительной паузы потоков являются: ожидание внешних ресурсов (подключения к базе данных, сетевые ресурсы, ресурсы устройства и т. д.) Источник и т. д.), бесконечный цикл, ожидание блокировки (живая блокировка и взаимоблокировка), все они должны отслеживать статус выполнения потока приложения Java, как показано ниже:

Измените количество потоков и нажмите на поток, чтобы просмотреть статус выполнения для анализа.Вы также можете нажать функцию «Обнаружение взаимоблокировки», чтобы решить проблемы взаимоблокировки.

2.2.4 Классы

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

2.2.5 Обзор ВМ

Когда мы добавляем параметры запуска в java-приложение (JAVA_OPTS), если вы хотите проверить фактическое использование этого приложения в Интернете и вступают ли в силу параметры, мы используем jinfo для инструмента командной строки, который можно увидеть прямо здесь, и включает системную информацию, информацию о классе, информацию о куче и связанную с ней виртуальную машину. параметры . Как показано ниже:

3 использование jvisualvm

иjconsoleТочно так же jdk также предоставляет в каталоге binjvisualvmинструменты, условно говоря,jvisualvmЕще более мощный, под Windows его можно запустить из командной строки (jvisualvm.exe) или дважды щелкните напрямуюjvisualvm.exeНачать бежать. Заинтересованные читатели могут обратиться кjvisualvmинструментОфициальная документация:https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html

3.1 Два способа подключения

иjconsoleТакой же,jvisualvmВы можете отслеживать локальный процесс Java, вы также можете отслеживать удаленный процесс Java. Локальный процесс можно выбрать напрямую, а удаленному процессу также необходимо добавить параметры запуска JMX в процесс java.

3.2 Использование функции jvisualvm

Функции jvisualvm относительно мощные, в основном это следующие функции:

  • Отображает процессы виртуальной машины, их конфигурацию и информацию о среде (jps, jinfo).
  • Мониторинг ЦП приложения, GC, кучи, области методов (1.7 и более ранние версии), метапространства (JDK1.8 и более поздние версии) и информации о потоках, эквивалентной jmap, jstat, jstack.
  • дамп и анализ моментальных снимков дампа кучи (jmap, jhat).
  • Анализ производительности выполнения программы на уровне методов, чтобы найти методы, которые вызываются чаще всего и выполняются дольше всего.
  • Моментальный снимок программы в автономном режиме: сбор конфигурации времени выполнения, дампа потока, дампа памяти и другой информации о программе для создания моментального снимка.

Функции интерфейса в основном разделены на несколько модулей, а именно: обзор, мониторинг, поток и сэмплер.

3.2.1 Обзор

Обзор представляет собой инструмент командной строки Java.jpsиjinfo, который может отображать процесс и его конфигурацию, свойства системы, параметры запуска и т. д., иjconsole«Профиль VM» почти такой же. Как показано ниже:

3.2.2 Мониторинг

Эта функция эквивалентнаjconsoleФункция «Обзор» также представляет собой графический способ отображения ЦП, изменений кучи, изменений номера потока и классов загрузки, но у нее есть функция, которая может удаленно создавать снимки дампа кучи (эквивалентноjmap -dump:file=./heap.hprof PID), место хранения файла будет выбрано при создании дампа.

Выгруженный снимок кучи, мы можем вручную загрузить файл, а затем использовать его функцию «загрузить снимок», чтобы загрузить его вjvisualvm(При загрузке вам нужно выбрать тип файла «hprof») и дополнительно проанализировать ситуацию с памятью в куче. После загрузки он будет включать общую информацию, использование памяти классами и экземплярами, и дважды щелкните класс, чтобы увидеть конкретное количество экземпляров.Если вы обнаружите, что экземпляров некоторых классов много или занятая память относительно высокий, вы можете знать проблему. Следующее:

3.2.3 Поток

Эта функция эквивалентнаjconsoleОн графически отображает текущее состояние и время выполнения каждого потока, а также может выполнять удаленный дамп потока.jstack -lфункция, после выхода дампа она сразу отображается в интерфейсе. следующее:

3.2.4 Сэмплер

пробоотборникjvisualvmУникальная функция ЦП и памяти может быть сэмплирована и отображена, а информация о памяти и потоке может отображаться через равные промежутки времени (класс занятой памяти и т. д.), а также предоставляет функции для выполнения GC, дампа памяти и дампа потока. . следующее:

4 Резюме

имеютjconsoleиjvisualvmДва инструмента визуализации могут сократить ввод командной строки и контролировать память, потоки, ЦП и другую информацию приложений Java более удобным и интуитивно понятным способом.Они являются хорошими помощниками для решения онлайн-проблем Java. Однако следует отметить, что прежде чем использовать эти два инструмента, нам все же необходимо иметь определенный набор знаний о JVM, механизме запуска Java-программ, потоках и т. д. Надеюсь, эта статья будет полезна для всех вас.

Информация о параметрах

Связанное Чтение