Рубрики
Без рубрики

Автоматизация – Анализ Дампов Кучи Java Из Командной строки

Некоторое время назад мне пришлось проанализировать большой дамп кучи java, созданный одним из наших серверов после сбоя памяти… Помеченный как java, командная строка, docker.

Некоторое время назад мне пришлось проанализировать большой дамп кучи java, созданный одним из наших серверов после утечки памяти. Это было тяжело. Обычно я использую Eclipse MAT для этой работы, но на этот раз он был настолько велик, что инструмент не мог проанализировать дамп кучи за приемлемое время и требовал все больше и больше памяти.

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

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

Я подумал, что должен быть лучший вариант. Итак, я огляделся и обнаружил, что вы можете позволить Eclipse MAT анализировать дамп кучи из командной строки!

Вы можете использовать скрипт, который поставляется с установкой Eclipse MAT для Linux. Скрипт вычислит индексы для последующего использования в eclipse MAT, а также может генерировать несколько хороших отчетов в формате HTML, которые обычно достаточно хороши, чтобы понять проблему. Индексные файлы помогут Eclipse MAT открыться за считанные секунды, а не за долгие часы.

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

Я попробовал сценарий, и он отлично сработал. Но он поставляется только с установкой Linux. Что, если я захочу запустить его на Mac или Windows? Кроме того, Eclipse MAT требует установки Java.

Итак, я решил обернуть его в контейнер docker, и вот как AutoMAT был создан. Теперь каждый раз, когда мне нужно проанализировать дамп кучи, я мог бы просто запустить что-то вроде:

docker run -it –mount src=$(pwd),target=/data,type=bind docker.bintray.io/jfrog/automat heap1.подозреваемые hprof 11g, обзор

Это позволит проанализировать дамп кучи, создать индексы и сгенерировать 2 хороших HTML-отчета. Подозреваемые и обзор.

После выполнения этого обычно достаточно открыть отчеты в формате HTML, чтобы понять проблему. Но если вам нужна более глубокая детализация памяти, вы можете открыть дамп кучи с помощью MAT, и, поскольку индексы уже есть, Eclipse MAT откроется мгновенно.

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

Итак, я решил создать автоматизацию вокруг этого. Во-первых, я попросил своего коллегу создать задание Дженкинса, которое возьмет дамп кучи с производственного сервера и загрузит его в Artifactory.

Позже я создал второе задание Дженкинса, которое загрузит дамп кучи из Artifactory и запустит его автоматически. Артефакты автоматического запуска будут загружены обратно в artifactory.

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

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

Если вы планируете работать с дампами кучи в автоматизации, я рекомендую сжать их, я использую pigz, который является более быстрой версией gzip. Я использовал Artifactory для хранения файлов для моей автоматизации, вы можете использовать что-нибудь еще, но если вы используете Artifactory, ознакомьтесь с jfrog-cli и особенно с функциями параллельной загрузки и выгрузки.

AutoMAT имеет открытый исходный код, и вы можете посетить страницу github для получения дополнительной информации: https://github.com/jfrog/auto-mat

Оригинал: “https://dev.to/jfrog/auto-mat-analyse-java-heap-dumps-from-commandline-10hg”