Визуальный инструмент для мониторинга производительности JVM

Java

1. Введение

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

2. JКонсоль

2.1 Введение

JConsole (консоль мониторинга и управления Java) — это инструмент визуального мониторинга, основанный на JMX (расширения управления Java). Его основная функция заключается в сборе системной информации и динамической настройке параметров системы через JMX MBean (управляемый компонент). JMX (Java Management Extensions) — это инфраструктура, которая внедряет функции управления для приложений, устройств, систем и т. д. и обычно используется для мониторинга рабочего состояния системы или управления некоторыми функциями системы.

2.2 Использование

Откройте каталог binjconsoleПосле программа автоматически сканирует все процессы JVM на текущем хосте:

https://github.com/heibaiying

При выборе процесс необходимо контролировать, нажмите на ссылку, вы можете войти в интерфейс мониторинга. Интерфейс мониторинга содержитОбзор,ОЗУ,нить,Добрый,Обзор ВМ,MBeanШесть вкладок. Обзорный интерфейс показываетОЗУ,нить,ДобрыйОбзорная информация интерфейса с тремя вкладками выглядит следующим образом:

https://github.com/heibaiying

Интерфейс памяти в основном используется для отображения использования различных областей в куче и вне кучи:

https://github.com/heibaiying

Интерфейс потока в основном отображает информацию о стеке каждого потока, и он находится в нижнем углу.Обнаружение взаимоблокировкикнопка, если после нажатия будет обнаружена взаимоблокировка, рядом с вкладкой потока в нижней части появится вкладка взаимоблокировки:

https://github.com/heibaiying

Перейдите на вкладку «Взаимоблокировка», чтобы увидеть поток, вызвавший взаимоблокировку:

https://github.com/heibaiying

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

https://github.com/heibaiying

3. Визуальная виртуальная машина

3.1 Введение

VisualVM (All-in-One Java Troubleshooting Tool) — одна из самых мощных программ мониторинга и обработки ошибок, предоставляемых Oracle.Помимо поддержки регулярного мониторинга работы, обработки ошибок и других функций, ее также можно использовать для анализа производительности ( Профилирование). В то же время, поскольку VisualVM представляет собой инструмент разработки на основе платформы NetBeans, он также поддерживает расширение функций с помощью подключаемых модулей. Основные возможности VisualVM следующие:

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

3.2 Использование

Откройте каталог binjvisualvmпрограмма, которая автоматически сканирует все процессы JVM на текущем хосте:

https://github.com/heibaiying

После нажатия на процесс, который нужно отслеживать, соответствующая информация о мониторинге будет отображаться с правой стороны:

https://github.com/heibaiying

1. Дамп кучи

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

https://github.com/heibaiying

2. Дамп потока

Вы можете просмотреть статус всех потоков в интерфейсе потока.Если есть взаимоблокировка, интерфейс также предложит:

https://github.com/heibaiying

можно сделать в это времядамп потокаЧтобы получить конкретную информацию о потоке, эффект аналогичен команде jstack:

https://github.com/heibaiying

3. Анализ производительности

В интерфейсе профилировщика может быть выполнен анализ производительности процессора и памяти. Чтобы начать анализ производительности, вам нужно выбрать первымCPUилиОЗУОдна из кнопок, VisualVM начнет записывать все методы, выполняемые приложением: если это анализ времени выполнения процессора, он будет считать время выполнения и время выполнения каждого метода; если это анализ памяти, он будет считать количество объектов, связанных с каждым методом, и пространство, занимаемое этими объектами. Чтобы завершить анализ производительности, нажмите кнопку «Стоп»:

https://github.com/heibaiying

4. Visual GC

Панель Visual GC не отображается по умолчанию и требует расширения с помощью плагинов. Она отслеживает состояние виртуальной машины в режиме реального времени и по функциям аналогична команде jstat:

https://github.com/heibaiying

3.3 Установите плагин

В главном интерфейсе нажмитеИнструменты => Плагинычтобы открыть панель плагинов. Щелкните правой кнопкой мыши параметр подключаемого модуля или нажмите кнопку «Установить», чтобы завершить установку соответствующего подключаемого модуля:

https://github.com/heibaiying

Следует отметить, что перед установкой плагина необходимо настроить центр плагинов в соответствии с версией собственной JVM, иначе будет выброшено исключение «невозможно подключиться к центру плагинов». Центр плагинов, соответствующий каждой версии, можно просмотреть по этому URL-адресу:визуальный центр VM.GitHub.IO/плагины…

https://github.com/heibaiying

После этого нужно настроить в программе адрес правильного центра плагинов:

https://github.com/heibaiying

В-четвертых, подключитесь к удаленному процессу

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

4.1 Не использовать учетные данные безопасности

Добавьте следующие параметры при запуске процесса Java на сервере:

 java -Dcom.sun.management.jmxremote.port=12345  #jmx远程连接的端口号
 -Dcom.sun.management.jmxremote.ssl=false 
 -Dcom.sun.management.jmxremote.authenticate=false  
 -jar springboot.jar 

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

4.2 Использование учетных данных безопасности

Добавьте следующие параметры при запуске процесса Java на сервере:

java -Dcom.sun.management.jmxremote.port=12345 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=true 
-Dcom.sun.management.jmxremote.access.file=/usr/local/jmxremote.access 
-Dcom.sun.management.jmxremote.password.file=/usr/local/jmxremote.password 
-jar springboot.jar 

вjmxremote.accessСодержимое выглядит следующим образом, где admin — это имя пользователя, readwrite означает доступный для чтения и записи, а также может быть установлен в readonly (только для чтения):

admin readwrite  

jmxremote.passwordСодержимое выглядит следующим образом, где admin — это имя пользователя, а 123456 — пароль:

admin 123456

После создания двух файлов вам также необходимо дать им разрешение на выполнение:

chmod 600 /usr/local/jmxremote.access
chmod 600 /usr/local/jmxremote.password
chown root:root /usr/local/jmxremote.access
chown root:root /usr/local/jmxremote.password

Затем при использовании VisualVM для удаленного подключения конфигурация выглядит следующим образом:

https://github.com/heibaiying

Следует отметить, что номер порта здесь настраиваетсяDcom.sun.management.jmxremote.portвместо номера порта программы Java. После завершения подключения вы можете просмотреть статус мониторинга соответствующего процесса.

использованная литература

  1. Основная ссылка из: Чжоу Чжимин, Глубокое понимание виртуальной машины Java (3-е издание), Machinery Industry Press, 2019-12. Если вы хотите глубже понять виртуальную машину, рекомендуется прочитать оригинальную книгу.
  2. Официальная документация VisualVM:визуальный VM.GitHub.IO/документ ATI…
  3. Java_jvisualvm использует JMX для подключения к удаленным машинам (практика)
  4. Удаленный мониторинг службы tomcat через брандмауэр с использованием JMX

Для получения дополнительных статей, пожалуйста, посетите [Руководство для разработчиков полного стека], адрес GitHub:GitHub.com/Black and WhiteShould/…