Java mission control что это такое нужна ли на компьютере
Из этой статьи вы узнаете, как выполнять мониторинг и администрирование рабочих нагрузок Java с помощью JDK Flight Recorder и JDK Mission Control.
Она была представлена компанией Oracle в 2018 году и управляется как проект на базе OpenJDK. Flight Recorder и Mission Control вместе предоставляют интерактивные возможности управления и мониторинга с минимальными затратами для рабочих нагрузок Java.
Установка JDK Mission Control и подключение к виртуальной машине Java
Выполните приведенные ниже действия, чтобы установить JDK Mission Control, подключиться к виртуальной машине Java (JVM) и получать представление обо всех аспектах запущенного приложения в реальном времени.
Убедитесь в том, что JDK установлен.
Найдите двоичный файл JDK Mission Control в репозитории OpenJDK JMC Project на GitHub. Затем выберите необходимую версию для системы, сохраните ее в локальном расположении и перейдите к этому каталогу.
Разверните скачанный файл. Приведенные ниже примеры предназначены для Azul Zulu Mission Control.
Linux:
Windows:
macOS:
Запустите приложение Java с использованием одного из совместимых пакетов JDK. Пример:
Запустите Zulu Mission Control.
Linux:
Windows:
macOS:
Найдите JVM, на которой запущено приложение.
На верхней левой панели окна Zulu Mission Control откройте вкладку JVM Browser (Браузер JVM).
Выберите и разверните элемент списка в верхнем левом углу для экземпляра JVM, на котором запущено приложение.
При необходимости запустите Java Flight Recorder.
Выберите запись с фиксированной продолжительностью или непрерывную запись, а также конфигурацию профилирования (точную) или непрерывную конфигурацию (меньшие общие расходы), а затем нажмите кнопку Finish (Готово).
Создайте дамп записи, осуществляемой во время выполнения приложения.
Строка записи, осуществляемой во время выполнения приложения, должна отобразиться под строкой Flight Recorder на вкладке JVM Browser (Браузер JVM). Щелкните правой кнопкой мыши строку с записью, осуществляемой во время выполнения приложения, и выберите Dump whole recording (Создать дамп всей записи).
Отобразится новая вкладка в большой области справа от окна Zulu Mission Control. Эта область представляет запись, осуществляемую во время выполнения приложения, дамп которой создан из JVM, на которой запущено приложение.
Проверьте запись, осуществляемую во время выполнения приложения, используя Zulu Mission Control.
- Если активация еще не выполнена, откройте вкладку Outline (Структура) в левой области окна Zulu Mission Control. Эта вкладка содержит различные представления данных, собранных в рамках записи, осуществляемой во время выполнения приложения.
Ресурсы
Java Mission Control - инструмент анализа производительности Java
введение
Эта статья - третья из серии инструментов анализа производительности Java, в которой я расскажу, как использовать Java Mission Control для углубленного анализа производительности Java-приложений, и предоставлю помощь разработчикам программ при использовании Java Mission Control.Часть 1: Инструменты операционной системы,Часть 2: встроенные инструменты мониторинга Java。
JMC - это инструмент мониторинга производительности, добавленный в выпуске JAVA 7u40. Пользователи, которые использовали JRockit JVM в JDK 6, будут знакомы, потому что это часть функции JMC в Java 7. После запуска JMC будет отображаться информация о текущем процессе JVM на текущем компьютере.Конечно, мы также можем добавить дополнительные процессы JVM для мониторинга. На рисунке 1 показан экран использования JMC для мониторинга сервера приложений GlassFish. На рисунке показана основная информация о отслеживаемой программе, в том числе частота использования ЦП и скорость использования кучи памяти. Стоит отметить, что диаграмма мониторинга JMC показывает использование ЦП на текущей машине. Вы можете увидеть мониторинг JMC Это вся система, а не только загрузка ЦП выбранной JVM. Настраивая информацию, отображаемую на панели мониторинга выше, вы можете просматривать подробную информацию о отслеживаемой JVM, такую как сборка мусора, загрузка классов, использование потоков и использование кучи памяти и т. Д. Вы также можете просмотреть конкретную информацию об операционной системе, такую как использование ЦП и памяти системы, информацию об обмене дисками, среднюю нагрузку и другую связанную информацию.
Рисунок 1. Схема мониторинга Java Mission Control
JFR (Java Flight Recorder)
JFR - очень важная функция в JMC. Он записывает исторические данные обо всех событиях JVM. С помощью этих данных аналитики производительности программ могут анализировать и диагностировать узкие места производительности JVM в сочетании с прошлыми историческими данными.
Основная операция JFR - запуск серии событий (например, поток заблокирован в ожидании блокировки). Когда происходит событие, все данные этого события будут сохранены в памяти или в файле. Поток данных хранится в кольцевом буфере, поэтому доступны только данные из самого последнего события. JMC может считывать и отображать эти данные о событиях из JVM или файлов, с помощью которых можно выполнять анализ производительности.
Через параметры JVM пользовательский интерфейс JMC использует команду jcmd для указания типов событий, упомянутых выше, размера кольцевого кеша и места хранения данных. По умолчанию JMC практически не влияет на отслеживаемое приложение. Но по мере того, как включается все больше и больше событий и изменяется порог срабатывания событий, влияние JMC также меняется. Затем будет показан пользовательский интерфейс JFR.
Обзор JFR
В этом примере используется JFR для записи связанных данных в течение 6 минут от сервера приложений GlassFish. На рисунке 2 показан общий вид после загрузки этих данных JMC.
Рисунок 2. Примерная диаграмма загрузки данных JMC.
Информация на этом изображении аналогична изображению, которое видит основной информационный мониторинг JMC. На панели мониторинга выше показано использование ЦП и кучи памяти. Над ней находится шкала времени, показывающая последовательность событий, а вертикальные полосы представляют события. Вы можете увеличить интересную часть временной шкалы для подробного анализа. Как показано на рисунке, выберите 1 минуту и 6 секунд в конце 6-минутной временной шкалы для увеличения.
Кривая использования ЦП на рис. 2 ясно показывает, что средний коэффициент использования JVM, на котором расположен сервер GlassFish, составляет около 70%, в то время как общая загрузка ЦП машины достигает 100%. Внизу есть несколько меток на выбор, метки системных атрибутов, метки информации JVM и т. Д. Кнопки в левой части экрана предоставляют более подробные сведения о состоянии работы приложения.
Просмотр памяти JFR
Информация, собираемая JFR memory view, очень обширна, и на рисунке ниже показана только ее часть. Из рисунка 3 видно, что объем памяти, занимаемой молодым поколением, периодически колеблется. Но интересно то, что, поскольку нет объектов, которые можно было бы перенести в старость, общий размер кучи памяти приложения не увеличился. На нижней левой панели отображаются все типы событий сборки мусора за период мониторинга, которым в этом примере всегда является ParallelScavenge. Когда событие выбрано, оно будет отображаться более подробно в правом нижнем углу, включая все этапы события и время, затраченное на каждый этап.
Рисунок 3. Пример графика использования памяти в новом поколении
Из различных тегов на рисунке мы можем видеть, что он содержит большой объем информации, включая время и количество очищаемых ссылочных объектов, сбой продвижения или эвакуации в параллельном сборщике, конфигурацию собственного алгоритма сборщика мусора и т. Д. И другая информация.
Просмотр кода JFR
Представление кода JFR показывает основную аналитическую информацию, полученную из записанных данных. Как показано на рисунке 4. Первая вкладка отображает все имена пакетов. Мы не видели подобных функций в других инструментах анализа. Видно, что выполнение метода Java.Math на рисунке составляет 41% от общего времени выполнения всех вызовов методов приложения. Традиционная перспектива анализа находится внизу, такая как метод горячей точки и вызов анализируемого кода, как показано на рисунке ниже.
Рисунок 4. Представление кода Java Flight Recorder
В отличие от других программ анализа, JFR предоставляет больше режимов визуализации кода. Вкладка Throwables отображает обработку исключений в приложении, а также вкладку, которая отображает информацию о работе компилятора.
JMC также предоставляет представление потоков, представление ввода-вывода, представление системы, все эти представления предназначены для лучшего анализа реальных событий, записанных JFR.
Обзор событий JFR
JFR записывает и сохраняет поток событий.JMC предоставляет различные представления для анализа этих событий, но панель событий JFR (показанная на рисунке 5) является наиболее эффективным способом анализа событий.
Рисунок 5. Просмотр событий Java Flight Recorder
Отображаемые события можно отфильтровать с помощью фильтра на левой панели.На рисунке выбраны только события уровня приложения. Следует отметить, что здесь будет отображаться только тип события, указанный в событии сохранения записи JFR, и фильтрация может выполняться только на этом основании.
Из рисунка 5 видно, что в течение 66 секунд приложение генерирует 6 типов событий, включая 10612 событий JVM и 1536 событий библиотеки JDK. Причина, по которой события Park и Monitor занимают много времени, обсуждалась в предыдущей статье, поэтому я не буду их здесь повторять. Приложение имеет несколько потоков, которые занимают 40 секунд для записи данных в сокет (Socket Write), что является нормальным значением для приложения, использующего 4 ядра, но оно все же может уменьшить объем данных, записываемых в сокет. Объем данных для повышения производительности.
Точно так же несколько потоков в приложении потратили 143 секунды на чтение данных из сокета (Socket Read). Это не кажется нормальным.Просматривая записи обработки этих событий, можно обнаружить, что несколько потоков используют блокирующий ввод-вывод для чтения прерывистых запросов управления. Временной интервал между этими запросами управления обычно очень большой, но эти потоки блокируются в методе read (), что приводит к тому, что эти потоки занимают слишком много времени при чтении данных.
Для событий монитора,
Анализатор квази-производительности может предоставить информацию о вызове кода ЦП и операционной системы, ожидающего разблокировки после блокировки потока, в то время как собственный анализатор Java может предоставить записи о выполнении этого кода ЦП и операционной системы, точно так же, как JVM напрямую предоставляет эту информацию в JFR.
События JFR получаются непосредственно из JVM. Благодаря этим событиям можно подробно понять внутренние условия работы приложения, чего не могут достичь другие инструменты. Есть много типов событий, и есть различия между разными версиями JDK. Ниже перечислены некоторые распространенные типы событий: первая строка описывает информацию, которую можно получить с помощью других инструментов, а вторая строка описывает информацию, которую нельзя получить, кроме как с помощью JFR.
Количество загруженных классов и количество выгруженных классов
Загрузите загрузчик классов (загрузчик классов), время, необходимое для загрузки класса
Количество созданных потоков, количество уничтоженных потоков, моментальные снимки потоков (дамп)
Блокировка, которая блокирует указанный поток и поток, заблокированный указанной блокировкой
Класс исключения приложения
Количество исключений и ошибок, сгенерированных приложением, и созданная запись стека исключений и ошибок.
Количество выделенных куч памяти, размер TLAB (Thread-Local Allocation Buffers)
Выделение памяти для указанных объектов в паре памяти и запись стека памяти, выделенной для этих объектов.
Время, затраченное на ввод / вывод
Время, затрачиваемое на каждый вызов чтения и записи, а также файл или сокет, для которого операция чтения и записи занимает слишком много времени.
Поток ждет монитора
Монитор, который заблокировал поток, время блокировки потока
Размер и содержимое кеша кода
Метод удаления из кеша кода, настройка кеша кода
Какие методы компилируются, компиляция OSR, компиляция требует много времени
В JFR нет дополнительной информации, но JFR суммирует информацию из нескольких исходных файлов.
Количество GC, включая номер каждой стадии, размер каждого поколения
В JFR нет дополнительной информации, но JFR суммирует информацию из нескольких инструментов.
Анализ обнаружения и анализ проб
JFR не имеет большого объема информации, получаемой анализатором, но JFR обеспечивает обзор более высокого уровня.
Включите JFR
Java Flight Recorder-JFR по умолчанию отключен. Добавив параметр -XX: + UnlockCommercialFeatures -XX: + FlightRecorder к команде для запуска приложения, вы можете включить JFR и некоторые связанные функции. Но стоит отметить, что эта команда только включает функцию JFR, но не включает различные события процесса записи. Это требует от нас включения функции записи запущенных потоков для генерации записей через пользовательский интерфейс или командную строку после включения функции JFR. .
Откройте JFR через JMC
Самый простой способ - запустить JFR через JMC.При запуске JMC все процессы JVM в текущей системе будут отображаться в интерфейсе. Процесс JVM отображается в древовидной структуре, разверните узел процесса JVM и откройте окно Flight Recorder с помощью кнопки Flight Recorder, как показано на рисунке 6.
Рисунок 6. Вид окна записи Java Flight Recorder
Flight Recorder имеет два режима: режим фиксированной продолжительности (1 минута на рисунке) и непрерывный режим.В непрерывном режиме кольцевой буфер используется для сохранения самых последних событий.
При выполнении упреждающего анализа, например, когда вы начинаете записывать события во время нагрузочного тестирования, вам следует использовать режим фиксированной продолжительности, чтобы вы могли получить хорошее представление о производительности JVM во время тестирования.
Непрерывный режим подходит для реактивного (реактивного) анализа, так что JVM может сохранять самые последние события, а также экспортировать и записывать данные в ответ на эти события. Например, в службах приложений Weblogic можно настроить триггеры для экспорта соответствующих данных после того, как сервер приложений отреагирует на аномальное событие.
Откройте JFR через командную строку
Добавьте -XX: + FlightRecorderOption = в параметры запуска JVM, чтобы начать запись событий. Параметр представляет собой пару данных, разделенных запятыми. Эти параметры описаны ниже:
Укажите название записи
Следует ли начинать запись событий во время инициализации, по умолчанию - false, для анализа реакции следует установить значение true.
Путь к файлу конфигурации JFR
Задержка перед началом записи
Путь к файлу для сохранения записанных событий
Следует ли использовать gzip для сжатия данных записи, по умолчанию - false
Максимальное время для сохранения записанных данных в кольцевом буфере
Максимальное пространство, занимаемое кольцевым буфером
Чтобы использовать JFR более гибко, вы можете использовать команду jcmd для динамического изменения значения этих параметров во время работы. Далее будут представлены команды для использования jcmd для установки параметров, связанных с JFR.
option_list - это пара ключ-значение, разделенная запятыми, и параметры соответствуют указанным выше параметрам. При записи событий в непрерывном режиме вы можете использовать следующую команду для экспорта данных из кольцевого буфера в файл:
Укажите имя записи события экспортируемых данных
Номер записи события JFR
Путь к файлу экспорта
В одном процессе может выполняться несколько записей событий JFR. Для просмотра всех текущих записей событий можно использовать следующую команду:
Эти различные записи событий различаются именами или случайными номерами записей. Используйте следующую команду, чтобы остановить запись событий, которая выполняется в процессе:
Имя останавливаемой записи события.
Номер записи события, которое необходимо остановить
Если это правда, отказаться от ранее сохраненных данных
Путь к файлу для сохранения данных
Выберите событие JFR
В настоящее время JFR поддерживает 77 типов событий. Большинство типов событий являются периодическими событиями и будут генерироваться через определенные промежутки времени. Другие типы событий являются типами триггеров, которые срабатывают только при достижении определенного установленного порога. Это означает, что он будет обнаружен и отслеживаться JFR.
Сбор данных о событиях, естественно, повлияет на производительность приложения, и размер воздействия зависит от типа и количества событий, которые включены для ведения журнала. По умолчанию запись всех типов событий не включена, а шесть типов событий, которые имеют большее влияние на производительность, отключены, чтобы уменьшить влияние JFR на приложение до менее 1%.
Но иногда стоит включить некоторые типы событий, которые имеют большее влияние на приложение. Например, TLAB - это тип события, который по умолчанию отключен, но он может помочь людям определить, входят ли определенные объекты напрямую в старое поколение при выделении памяти. Точно так же, хотя событие профилирования включено по умолчанию, оно запускается каждые 20 миллисекунд, что может легко вызвать ошибки при анализе выборки.
События, регистрируемые JFR, определяются в шаблоне, который можно указать с помощью параметра настроек. Для среды выполнения JFR есть два шаблона:
- Шаблон по умолчанию: влияние событий на производительность приложения не превышает 1%.
- Шаблон анализа: установите для большинства событий, основанных на пороге (Threshhold), запуск каждые 10 миллисекунд.Влияние шаблона анализа на производительность приложения составляет около 2%.
Эти шаблоны управляются менеджером шаблонов JMC, который запускается соответствующей кнопкой в JMC. Есть два каталога для хранения шаблонов: каталог $ HOME / .JMC / <release> и каталог $ JAVA_HOME / jre / lib / jfr. В диспетчере шаблонов вы можете выбрать глобальный шаблон, локальный шаблон или определить новый шаблон. При определении нового шаблона вам необходимо указать доступные события, указать, что состояние этих событий по умолчанию - включено или выключено, и определить порог этих событий.
На рисунке 7 событие чтения файла включено, и порог установлен на 15 миллисекунд, то есть это событие будет инициировано, когда файл читается более 15 миллисекунд. В то же время это событие также настроено на создание записи стека для события чтения файла. Поскольку это увеличит влияние события на производительность приложения, этот параметр устанавливается как дополнительный элемент конфигурации.
Рисунок 7. Пример схемы шаблона события Java Flight Recorder
Файл шаблона события - это файл xml, поэтому, прочитав файл xml, легко определить, включено ли событие. Вы также можете скопировать локальный файл шаблона в глобальный каталог шаблонов для использования другими пользователями и группами.
Java Flight Recorder (JFR) обеспечивает подробный анализ состояния JVM во время выполнения. Это связано с тем, что сам JFR является частью встроенной в него Java. Как и другие инструменты, использование JFR в некоторой степени увеличивает накладные расходы на производительность приложения. Регулярное использование JFR по-прежнему может помочь нам собрать много информации, а накладные расходы на производительность низкие.
подводить итоги
До сих пор в этой серии статей были представлены наиболее часто используемые инструменты анализа производительности Java. Все мы знаем, что отличный инструмент анализа производительности - это ключ к нашему анализу производительности, но он не может быть полностью или даже чрезмерно зависимым от этого инструмента. На первый взгляд, мы должны помнить, что не существует лучшего инструмента, а есть только подходящие инструменты. Как мы уже говорили, инструмент A может подходить для анализа большинства приложений, но он не может выявить проблемы, на которые может указать инструмент B, поэтому Мы должны научиться использовать эти инструменты гибко и свободно.
Инструмент командной строки также очень полезен для аналитиков производительности, поэтому не отрицайте возможности, которые он может дать. Он часто может играть огромную роль в автоматическом мониторинге производительности или тестировании производительности.
Я надеюсь, что эти введения помогут персоналу по настройке производительности и разработчикам в их повседневной работе. Как говорится, чистого золота нет, никто не идеален, и инструменты тоже. У каждого инструмента есть свои преимущества и недостатки.Только при полном понимании сценариев, для которых каждый инструмент подходит, эти инструменты могут использовать свои сильные стороны и избегать слабых мест, чтобы в полной мере проявить свои эффекты.
1. Introduction
2. Java Mission Control
3. JMC Licence
4. Realtime Process Monitoring
– 4.1 Event Triggers
– 4.2 Memory Tab
– 4.3 Threads Tab
5. Using Java Flight Recorder
– 5.1 How To Run
– 5.2 Initial Screen
– 5.3 Memory Tab
– 5.4 Allocations Tab
– – 5.4.1 By Class
– – 5.4.2 By Thread
– – 5.4.3 Allocation Profile
– 5.5 Code Tab
– – 5.5.1 Hot Methods
– – 5.5.2 Exceptions Tab
– – 5.5.3 Threads Tab
– – 5.5.4 I/O Tab
6. The Java Production Tooling Ecosystem
1. Введение
В этой статье описывается Java Mission Control — инструмент JDK GUI, доступный начиная с Java 7u40, вместе с Java Flight Recorder.
2. Java Mission Control
Oracle JMC можно использовать для двух основных целей:
- Мониторинг состояния нескольких запущенных Oracle JVM
- Анализ файла дампа Java Flight Recorder
1. Introduction
This article will describe the Java Mission Control – a JDK GUI tool available since Java 7u40, together with Java Flight Recorder.
Инструменты
Для успешной диагностики нам понадобятся два инструмента: Java Mission Control (jmc) и Eclipse Memory Analyzer. Вобщем-то можно обойтись только Memory Analyzer, но с JMC картина будет более полной.
- JMC входит в состав JDK (начиная с 1.7)
- Memory Analyzer может быть загружен отсюда: MAT
See also [ edit ]
- Java platform
- Java version history
- JRockit
- JDK Flight Recorder
3. Лицензия JMC
Текущая лицензия JMC (см. «Дополнительные условия лицензии» здесь ) позволяет вам свободно использовать JMC для разработки, но она требует приобретения коммерческой лицензии, если вы хотите использовать ее в производстве.
Анализ использования памяти
Прежде всего, нужно запустить приложение со следующими флагами JVM:
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
Не используйте эти опции на production системе без приобретения специальной лицензии Oracle!
Эти опции позволят запустить Flight Recorder – утилита, которая поможет собрать информацию об использовании памяти (и много другой важной информации) во время выполнения программы. Я не буду описывать здесь как запустить Flight Recorder, эта информация легко гуглится. В моем случае было достаточно запустить FR на 10-11 минут.
Рассмотрим следующий рисунок, на котором показана классическая «пила» памяти, а так же важный сигнал, что что-то не так с использованием памяти:
Можно увидеть, что после каждого цикла очистки памяти, heap все больше заполняется, я выделил это желтым треугольником. «Пила» все время как бы ползет вверх. Это значит, что какие-то объекты не достижимы для очистки и накапливаются в old space, что со временем приведет к переполнению этой области памяти.
Oracle Java SE Subscription
Java SE is the most common platform for enterprise systems and ISV applications today. Oracle Java SE Subscription and Oracle Java SE Desktop Subscription are Oracle’s solutions for enterprise developers and ISVs running mission critical applications and infrastructure on the Java SE platform.
WHAT’S NEW
- NEW: Introducing Oracle Java SE Subscription
Oracle Java SE Subscription combines license and support into a simple subscription that allows you to cost-effectively manage Java SE installations, updates and upgrades across your enterprise.
NEW Release: Java Platform, Standard Edition 12
Java SE 12.0.2 is the latest release of Java SE Platform. This release contains features like Switch Expressions, JVM Constants API, Default CDS Archives, Abortable Mixed Collections for G1, and a Low-Pause-Time Garbage Collector. See OpenJDK 12 project page for more details.
Oracle Java SE 8u221 is now available for download and includes important bug fixes.
Oracle Java Advanced Management Console (AMC) is a tool used to view information about Java application usage within an enterprise through usage tracking. AMC also enables the creation of deployment rules and rule sets to manage the execution of browser-based Rich Internet Applications.
MSI Enterprise JRE Installer is an MSI compatible installer that enables system administrators to install the JRE across the enterprise without end user interaction. Integrated with the MSI Installer is the Java Uninstall Tool which prov >Support is an integral part of Java SE Subscription. Java SE Subscription is the only way to get Oracle Premiere Support for your Oracle Java SE products. You will have 24/7 access to an experienced Oracle Java support team and continued access to update releases for older versions of Java. Learn MoreJava Mission Control(JMC) enables you to monitor and manage Java applications without introducing the performance overhead normally associated with these types of tools. It uses data collected for normal adaptive dynamic optimization of the Java Virtual Machine (JVM). Learn MoreJava Flight Recorder (JFR) is a tool for collecting diagnostic and profiling data about a running Java application. It is integrated into the Java Virtual Machine (JVM) and causes almost no performance overhead, so it can be used even in heavily loaded production environments. This powerful tool is primarily used for profiling, black box analysis, support and debugging. Learn MoreJava Advanced Management Console (AMC) employs the Deployment Rule Set (DRS) security feature, along with other functionality including Java Usage Tracker, to give system administrators greater and easier control in managing Java version compatibility and security updates for desktops within their enterprise and for ISVs with Java-based applications and solutions, enabling a more secure environment and enhanced application experience and availability. Learn MoreMicrosoft Windows Installer (MSI) Enterprise JRE Installer allows for pre-configured installation of the JRE on desktops in the enterprise without user interaction. Available for Windows 64 and 32 bit systems, the MSI compatible installer enables system administrators to provide automated, consistent installation of the JRE across all desktops in the enterprise, free of user interaction requirements. Now the common features such as rollback of unsuccessful installs, repair of broken installations and installing over existing broken installations are all accessible with the MSI Installer in place. Oracle Java SE Advanced product customers can download the MSI installer through their My Oracle Support (MOS) account. FAQJava Usage Tracker (JUT) tracks how Oracle Java SE Advanced and Oracle Java SE Suite Java Runtime Environments (JREs) are being used in your systems. The output of JUT is a plain text, comma-separated record that contains the JRE version, the application being run, and other details. This record is appended to a file or sent over the network in a User Datagram Protocol (UDP) packet. The AMC harvests an extensive set of data from the JUT about Java Applets and Web Start applications along with the JREs upon which they run. Gathered from a highly scalable number of clients in an enterprise network the data is stored in the AMC database. The data can then be viewed in the AMC User Interface for analysis. Learn More
4. Мониторинг процессов в реальном времени
Вы можете присоединиться к JVM, щелкнув по нему правой кнопкой мыши на вкладке JVM Browser главного окна и выбрав пункт меню «Start JMX Console». Вы увидите следующий экран. Здесь нет ничего необычного, просто обратите внимание на кнопки «+», которые позволяют добавить дополнительные счетчики на этот экран.
4.1 Триггеры событий
Триггеры позволяют запускать различные действия в ответ на превышение определенных счетчиков JMX и (необязательно) превышение порогового значения в течение определенного периода времени. Например, вы можете запустить запись JFR в случае достаточно высокой загрузки процессора, чтобы понять, какой компонент его вызывает (и вы не ограничены одной записью!).
Обратите внимание, что триггеры работают на любом счетчике JMX (вы видите кнопку «Добавить…»?) — вы можете установить больше триггеров, чем доступно в стандартном дистрибутиве, и экспортировать настройки на диск. Вы даже можете работать со своими счетчиками JMX своего приложения.
Перейдите на вкладку «Действие» в окне «Сведения о правиле» — здесь вы можете указать, какое действие вы хотите выполнить в случае события.
Обратите внимание, что вам нужно запустить приложение как минимум в Java 7 update 40, если вы хотите правильно использовать JFR — я не смог записать какие-либо события из JRE до Java7u40 (возможно, это была ошибка или несовместимость между некоторыми версиями JRE…) ,
4.2 Вкладка «Память»
Следующая вкладка «Память» предоставит вам сводную информацию о куче вашего приложения и сборке мусора. Обратите внимание, что вы можете запустить полный сборщик мусора и запросить дамп кучи с этой страницы (выделено на снимке экрана). Но, по сути, эта страница — просто приятный интерфейс с функциональностью, доступной из других источников.
4.3 Вкладка Темы
Эта вкладка позволяет вам видеть список запущенных потоков в вашем приложении с их текущими дампами стека (обновляется раз в секунду). Это также позволяет увидеть:
- Состояние потока — работает или заблокирован / ждет
- Имя замка
- Если поток заблокирован
- Сколько раз поток был заблокирован
- Использование процессора в потоке!
- Объем памяти, выделенный данному потоку с момента его запуска
Помните, что вам нужно включить профилирование процессора, обнаружение взаимоблокировок и отслеживание выделения памяти, чтобы получить эту информацию в режиме реального времени:
External links [ edit ]
- JDK Mission Control Project Page
- JDK Mission Control Mercurial Repository
- JDK Mission Control GitHub Mirror
6. Экосистема Java Production Tooling
Java Flight Recorder — это подсистема Oracle JVM, которая позволяет собирать диагностическую информацию, минимально нагружая работающее приложение. Java Mission Control — графический инструмент, входящий в поставку Oracle JDK, позволяющий анализировать информацию, собранную Java Flight Recorder. Одно из применений Flight Recorder — поиск проблем производительности.
В рамках мастер-класса продемонстрированы приёмы поиска типовых проблем, таких как «горячие участки» кода, источники мусора и т.п., с использованием Mission Control / Flight Recorder.
[СПб, 25-26 октября] Joker
[29-30 октября, СПб] DevOops
Для обратной связи используйте Telegram-чат.
среда, 2 ноября 2016 г.
Профилируем Java приложения используя Java Mission Control
В этой статье я расскажу о том, что такое Java Mission Control и чем он может помочь.
Начиная с 7u40 в составе Oracle JDK появился GUI инструмент для реалтайм мониторинга и профилирования JVM. Он позволяет собрать очень много информации о JVM процессе, найти узкие места и проблемы, которые влияют на производительность.
С точки зрения пользователя, вы запускаете ваше Java приложение, включаете запись событий, ждете фиксированное время пока события записываются и затем проводите анализ собранных данных.
Mission Control включает в себя JMX консоль и Java Flight Recorder (JFR). С помощью JMX осуществяется взаимодействие с удаленным Java процессом, а JFR собирает данные о событиях.
По умолчанию JMX и JFR выключены в Oracle JVM. Для их включения при запуске вашего Java приложения добавьте следущие параметры:
Пример запуска JAR файла с этими параметрами:
После запуска приложения попробуем подключиться к нему с помощью JMC.
Запускаем GUI (набрать в консоле jmc ), создаем новое подкючение к JVM, указываем настройки подключения к удаленному серверу:
Включаем запись событий, указываем сколько времени будем собирать данные, одной минуты вполне дотаточно:
Ждем минуту и смотрим информацию о событиях в приложении.
Your search did not match any results.
Trending Questions
Oracle Java SE Subscription
- NEW: Introducing Oracle Java SE Subscription
Oracle Java SE Subscription combines license and support into a simple subscription that allows you to cost-effectively manage Java SE installations, updates and upgrades across your enterprise.
Java SE 12.0.2 is the latest release of Java SE Platform. This release contains features like Switch Expressions, JVM Constants API, Default CDS Archives, Abortable Mixed Collections for G1, and a Low-Pause-Time Garbage Collector. See OpenJDK 12 project page for more details.
Читайте также: