Мы делимся несколькими очень простыми в использовании инструментами настройки JVM. Рекомендуется добавить их в свою коллекцию!
Мы делимся несколькими очень простыми в использовании инструментами настройки JVM. Рекомендуется добавить их в свою коллекцию!

1. Аннотация

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

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

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

Давайте взглянем на некоторые из лучших инструментов визуального анализа JVM.

2. Инструменты, поставляемые с JDK

2.1、jconsole

jconsole — это инструмент визуального мониторинга, входящий в состав JDK, который можно использовать для просмотра обзора работы приложения, памяти, потоков, классов, сводки виртуальных машин, MBeans и другой информации. Это инструмент мониторинга производительности графического пользовательского интерфейса, основанный на JMX (расширения управления Java), добавленный, начиная с JDK1.5.

2.1.1. Способ запуска.

существовать Заказлинейный входjconsoleготов начать。если Windows Пользователи также могут jdk из каталога установки bin в каталоге,оказатьсяjconsole.exe,Дважды щелкните, чтобы начать. Интерфейс следующий.

Вы можете напрямую выбрать локальную JVM или подключиться к удаленной JVM через JMX.

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

Язык кода:javascript
копировать
-Dcom.sun.management.jmxremote.port=6969  
 -Dcom.sun.management.jmxremote.ssl=false  
 -Dcom.sun.management.jmxremote.authenticate=false

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

После входа вы можете увидеть обзор jconsole и основные функции, такие как обзор, память, поток, класс, виртуальная машина, MBean и другие разделы. Обзорный интерфейс выглядит следующим образом.

2.1.2. Сектор памяти.

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

2.1.3. Раздел темы.

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

2.1.4. Табличка с указанием класса.

В разделе классов в основном отображается количество загруженных классов. Интерфейс следующий.

2.1.5, раздел обзора виртуальной машины

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

2.1.6, раздел MBean

В разделе MBean в основном отображаются свойства, методы и т. д. управляемых компонентов. Интерфейс следующий.

2.2、VisualVM

VisualVM также является инструментом визуального мониторинга, который поставляется с JDK. Он может не только отслеживать процессор, память, поток, класс и другую информацию службы, но также собирать данные об экземпляре программного обеспечения JVM и сохранять данные в локальной системе. Используйте позже или поделитесь с другими пользователями, присоединяйтесь, начиная с JDK1.6.

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

2.2.1. Способ запуска.

существовать Заказлинейный входjvisualvmготов начать。если Windows Пользователи также могут jdk из каталога установки bin в каталоге,оказатьсяjvisualvm.exe,Дважды щелкните, чтобы начать. Интерфейс следующий.

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

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

2.2.2. Раздел мониторинга.

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

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

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

2.2.3. Раздел темы.

Раздел потока в основном отображает количество действий потока. Интерфейс следующий.

После нажатия кнопки «Дамп потока» будет создан снимок потока на текущий момент, и статус потока можно будет запросить в интерфейсе. Интерфейс следующий.

2.2.4. Раздел сэмплера.

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

Например, после нажатия кнопки «ЦП» вы можете в реальном времени запросить рейтинг процессорного времени, занимаемого потоками и методами, и нажать кнопку «Стоп», чтобы завершить выборку.

Таким же образом, нажав кнопку «Память», вы можете в реальном времени запросить рейтинг размеров объектов в куче и рейтинг размера памяти, выделяемой каждым потоком.

2.2.5. Установка плагина.

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

Как установить плагин?

В строке меню VisualVM нажмите «Инструменты» -> «Плагины», и появится следующий интерфейс.

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

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

Язык кода:javascript
копировать
https://visualvm.github.io/pluginscenters.html

Скопируйте соответствующую ссылку и заполните соответствующий адрес в графе настроек.

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

3. Сторонние инструменты настройки

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

  • МАТ: мощный Java Анализатор кучи Память, который можно использовать для поиска утечек Память и просмотра потребления Память, пользователи могут использовать visualvm или есть jmap Заказ создает файлы кучи, а затем импортирует их в инструмент для анализа.
  • GCeasy: онлайн-сервис GC Анализатор журналов очень удобен в использовании. web Импорт веб-сайта GC Журнал, обнаружение утечек в режиме реального времени Память, ГХ Анализ причин паузы, JVM Предложения по настройке, оптимизации и другие функции
  • GCViewer: очень известный инструмент визуального анализа журнала GC, мощный и совершенно бесплатный.
  • JProfiler: инструмент коммерческого анализа производительности
  • Артас: инструмент онлайн-мониторинга и диагностики с открытым исходным кодом Alibaba,Вы можете просмотреть загрузку приложения, Память, gc, нит и другую информацию.

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

3.1、Arthas

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

Официальный адрес Артаса следующий!

Язык кода:javascript
копировать
https://arthas.aliyun.com/
3.1.1. Способ запуска.

Arthas Метод запуска очень прост, это jar Сумка,проходитьjava -jarЗаказ Готов к запуску。

Адрес загрузки пакета jar следующий.

Язык кода:javascript
копировать
https://arthas.aliyun.com/arthas-boot.jar

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

Язык кода:javascript
копировать
 java -jar arthas-boot.jar

После успешного запуска вы увидите следующий интерфейс.

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

Вход в вышеуказанный интерфейс означает, что мониторинг приложения прошел успешно.

3.1.2, приборная панель

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

Язык кода:javascript
копировать
dashboard

После возврата каретки,Всего есть три фрагмента информации,Они естьИнформация о потоке, информация о памяти, информация о времени выполнения,Интерфейс следующий.

3.1.3. команда потока

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

Язык кода:javascript
копировать
thread 16

Вы также можете запросить всю информацию о потоке с помощью следующей команды.

Язык кода:javascript
копировать
thread -all
3.1.4, команда jad

Иногда мы хотим проверить, правильно ли опубликован исходный код в Интернете. Вы можете сделать это через . jad Заказ на декомпиляцию класса,Используйте это для запроса информации об исходном коде.,Например, декомпилироватьApplicationдобрый,Заказ следующий.

Язык кода:javascript
копировать
jad com.example.boot.Application
3.1.5. команда наблюдения.

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

Язык кода:javascript
копировать
watch com.example.boot.test.web.TestController queryAll returnObj

Фронтенду необходимо инициировать запрос, и если он будет выполнен здесь, данные будут. Результаты выходного образца следующие.

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

4. Резюме

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

5. Справочник

1.http://www.ityouknow.com/jvm/2017/09/22/jvm-tool.html

2.https://arthas.aliyun.com/doc/

boy illustration
Проект flask развертывается на облачном сервере и получает доступ к серверной службе через доменное имя.
boy illustration
Порт запуска проекта Spring Boot часто занят, полное решение
boy illustration
Java вызывает стороннюю платформу для отправки мобильных текстовых сообщений
boy illustration
Практическое руководство по серверной части: как использовать Node.js для разработки интерфейса RESTful API (Node.js + Express + Sequelize + MySQL)
boy illustration
Введение в параметры конфигурации большого экрана мониторинга Grafana (2)
boy illustration
В статье «Научно-популярная статья» подробно объясняется протокол NTP: анализ точной синхронизации времени.
boy illustration
Пример разработки: серверная часть Java и интерфейсная часть vue реализуют функции комментариев и ответов.
boy illustration
Nodejs реализует сжатие и распаковку файлов/каталогов.
boy illustration
SpringBootИнтегрироватьEasyExcelСложно реализоватьExcelлистимпортировать&Функция экспорта
boy illustration
Настройка среды под Mac (используйте Brew для установки go и protoc)
boy illustration
Навыки разрешения конфликтов в Git
boy illustration
Распределенная система журналов: развертывание Plumelog и доступ к системе
boy illustration
Артефакт, который делает код элегантным и лаконичным: программирование на Java8 Stream
boy illustration
Spring Boot(06): Spring Boot в сочетании с MySQL создает минималистскую и эффективную систему управления данными.
boy illustration
Как использовать ArrayPool
boy illustration
Интегрируйте iText в Spring Boot для реализации замены контента на основе шаблонов PDF.
boy illustration
Redis реализует очередь задержки на основе zset
boy illustration
Получить текущий пакет jar. path_java получает файл jar.
boy illustration
Краткое обсуждение высокопроизводительного шлюза Apache ShenYu
boy illustration
Если вы этого не понимаете, то на собеседовании даже не осмелитесь сказать, что знакомы с Redis.
boy illustration
elasticsearch медленный запрос, устранение неполадок записи, запрос с подстановочными знаками
boy illustration
По какому стандарту взимается плата за обслуживание программного обеспечения?
boy illustration
IP-адрес Получить
boy illustration
【Java】Решено: org.springframework.web.HttpRequestMethodNotSupportedException
boy illustration
Native js отправляет запрос на публикацию_javascript отправляет запрос на публикацию
boy illustration
.net PDF в Word_pdf в Word
boy illustration
[Пул потоков] Как Springboot использует пул потоков
boy illustration
Подробное объяснение в одной статье: Как работают пулы потоков
boy illustration
Серия SpringCloud (6) | Поговорим о балансировке нагрузки
boy illustration
IDEA Maven может упаковать все импортное полностью красное решение — универсальное решение.