1. Введение
в каталоге установки JDKbinВ этой папке, в дополнение к инструментам мониторинга командной строки, также предоставляется несколько инструментов визуального мониторинга, которые помогают пользователям интуитивно понять текущее состояние виртуальной машины. Обычно используются следующие инструменты визуального мониторинга:
2. JКонсоль
2.1 Введение
JConsole (консоль мониторинга и управления Java) — это инструмент визуального мониторинга, основанный на JMX (расширения управления Java). Его основная функция заключается в сборе системной информации и динамической настройке параметров системы через JMX MBean (управляемый компонент). JMX (Java Management Extensions) — это инфраструктура, которая внедряет функции управления для приложений, устройств, систем и т. д. и обычно используется для мониторинга рабочего состояния системы или управления некоторыми функциями системы.
2.2 Использование
Откройте каталог binjconsoleПосле программа автоматически сканирует все процессы JVM на текущем хосте:
При выборе процесс необходимо контролировать, нажмите на ссылку, вы можете войти в интерфейс мониторинга. Интерфейс мониторинга содержитОбзор,ОЗУ,нить,Добрый,Обзор ВМ,MBeanШесть вкладок. Обзорный интерфейс показываетОЗУ,нить,ДобрыйОбзорная информация интерфейса с тремя вкладками выглядит следующим образом:
Интерфейс памяти в основном используется для отображения использования различных областей в куче и вне кучи:
Интерфейс потока в основном отображает информацию о стеке каждого потока, и он находится в нижнем углу.Обнаружение взаимоблокировкикнопка, если после нажатия будет обнаружена взаимоблокировка, рядом с вкладкой потока в нижней части появится вкладка взаимоблокировки:
Перейдите на вкладку «Взаимоблокировка», чтобы увидеть поток, вызвавший взаимоблокировку:
ПрошлойДобрыйВкладки в основном используются для отображения количества загруженных и выгруженных классов. а такжеОбзор ВМВкладки в основном используются для отображения соответствующих параметров виртуальной машины, а именно:
3. Визуальная виртуальная машина
3.1 Введение
VisualVM (All-in-One Java Troubleshooting Tool) — одна из самых мощных программ мониторинга и обработки ошибок, предоставляемых Oracle.Помимо поддержки регулярного мониторинга работы, обработки ошибок и других функций, ее также можно использовать для анализа производительности ( Профилирование). В то же время, поскольку VisualVM представляет собой инструмент разработки на основе платформы NetBeans, он также поддерживает расширение функций с помощью подключаемых модулей. Основные возможности VisualVM следующие:
- Отображение процесса виртуальной машины и информации о его конфигурации, информации об окружающей среде (аналогично функциям jps, jinfo);
- Мониторинг процессора приложения, сборки мусора, кучи, области методов и информации о потоках (аналогично функциям jstat, jstack);
- дамп и анализ снимков дампа кучи (аналогично функциям jmap, jhat);
- Программа на уровне метода, выполняющая анализ производительности, чтобы найти метод, который вызывается чаще всего и имеет наибольшее время выполнения;
- Моментальный снимок программы в автономном режиме: вы можете собрать конфигурацию времени выполнения, дамп потока, дамп памяти и другую информацию о программе для создания моментального снимка.
3.2 Использование
Откройте каталог binjvisualvmпрограмма, которая автоматически сканирует все процессы JVM на текущем хосте:
После нажатия на процесс, который нужно отслеживать, соответствующая информация о мониторинге будет отображаться с правой стороны:
1. Дамп кучи
Нажмите кнопку в интерфейсе мониторинга, чтобывыполнять сборку мусораилидамп кучи. После дампа кучи также отображаются результаты его анализа:
2. Дамп потока
Вы можете просмотреть статус всех потоков в интерфейсе потока.Если есть взаимоблокировка, интерфейс также предложит:
можно сделать в это времядамп потокаЧтобы получить конкретную информацию о потоке, эффект аналогичен команде jstack:
3. Анализ производительности
В интерфейсе профилировщика может быть выполнен анализ производительности процессора и памяти. Чтобы начать анализ производительности, вам нужно выбрать первымCPUилиОЗУОдна из кнопок, VisualVM начнет записывать все методы, выполняемые приложением: если это анализ времени выполнения процессора, он будет считать время выполнения и время выполнения каждого метода; если это анализ памяти, он будет считать количество объектов, связанных с каждым методом, и пространство, занимаемое этими объектами. Чтобы завершить анализ производительности, нажмите кнопку «Стоп»:
4. Visual GC
Панель Visual GC не отображается по умолчанию и требует расширения с помощью плагинов. Она отслеживает состояние виртуальной машины в режиме реального времени и по функциям аналогична команде jstat:
3.3 Установите плагин
В главном интерфейсе нажмитеИнструменты => Плагинычтобы открыть панель плагинов. Щелкните правой кнопкой мыши параметр подключаемого модуля или нажмите кнопку «Установить», чтобы завершить установку соответствующего подключаемого модуля:
Следует отметить, что перед установкой плагина необходимо настроить центр плагинов в соответствии с версией собственной JVM, иначе будет выброшено исключение «невозможно подключиться к центру плагинов». Центр плагинов, соответствующий каждой версии, можно просмотреть по этому URL-адресу:визуальный центр VM.GitHub.IO/плагины…
После этого нужно настроить в программе адрес правильного центра плагинов:
В-четвертых, подключитесь к удаленному процессу
В приведенной выше демонстрации 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 для удаленного подключения конфигурация выглядит следующим образом:
Следует отметить, что номер порта здесь настраиваетсяDcom.sun.management.jmxremote.portвместо номера порта программы Java. После завершения подключения вы можете просмотреть статус мониторинга соответствующего процесса.
использованная литература
- Основная ссылка из: Чжоу Чжимин, Глубокое понимание виртуальной машины Java (3-е издание), Machinery Industry Press, 2019-12. Если вы хотите глубже понять виртуальную машину, рекомендуется прочитать оригинальную книгу.
- Официальная документация VisualVM:визуальный VM.GitHub.IO/документ ATI…
- Java_jvisualvm использует JMX для подключения к удаленным машинам (практика)
- Удаленный мониторинг службы tomcat через брандмауэр с использованием JMX
Для получения дополнительных статей, пожалуйста, посетите [Руководство для разработчиков полного стека], адрес GitHub:GitHub.com/Black and WhiteShould/…