Сбор дампа кучи и дампа потока вручную и использование средства Java Flight Recorder в Azure Spring Apps

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к: ✔️ Basic/Standard ✔️ Enterprise

В этой статье описывается, как вручную создать дамп кучи или дамп потока и как запустить JFR.

Умение эффективно устранять неполадки имеет решающее значение для способности устранять проблемы в рабочих средах и обеспечивать работу организации в сети. В Azure Spring Apps доступна потоковая передача журналов приложений и запросов, информативные метрики, оповещения, распределенная трассировка и т. д. Однако при получении оповещений о запросах с высокой задержкой, утечке кучи виртуальной машины Java или высокой загрузке ЦП в вашем распоряжении нет решения для "последней мили". По этой причине мы обеспечили вам возможность создать дамп кучи вручную, создать дамп потока и запустить JFR.

Необходимые компоненты

  • Развернутый экземпляр службы Azure Spring Apps. Чтобы приступить к работе, ознакомьтесь со статьей Краткое руководство. Развертывание первого приложения в Azure Spring Apps.
  • По крайней мере одно приложение, ранее созданное в этом экземпляре службы.
  • Собственное постоянное хранилище, как описано в разделе Как включить собственное постоянное хранилище в Azure Spring Apps. Это хранилище используется для сохранения созданных диагностических файлов. Пути, которые вы указываете в приведенных ниже значениях параметров, должны находиться под путем подключения постоянного хранилища, привязанного к приложению. Чтобы использовать путь под путем подключения, нужно заранее создать вложенный путь.

Создание дампа кучи

Используйте следующую команду, чтобы создать дамп кучи приложения в Azure Spring Apps.

az spring app deployment generate-heap-dump \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path>

Создание дампа потока

Используйте следующую команду, чтобы создать дамп потока вашего приложения в Azure Spring Apps.

az spring app deployment generate-thread-dump \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path>

Запуск JFR

Используйте следующую команду, чтобы запустить JFR для вашего приложения в Azure Spring Apps.

az spring app deployment start-jfr \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --app-instance <app-instance name> \
    --file-path <your-target-file-path-in-your-persistent-storage-mount-path> \
    --duration <duration-of-JFR>

Для duration по умолчанию задано значение 60 секунд.

Создание дампа с помощью портала Azure

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

  1. На портале Azure перейдите к нужному приложению и нажмите Устранение неполадок.

    Снимок экрана: портал Azure с страницей обзора приложения с выделенной кнопкой

  2. В области Устранение неполадок выберите экземпляр приложения и тип нужного дампа.

    Снимок экрана: панель устранения неполадок портал Azure.

  3. В поле Путь к файлу укажите путь подключения постоянного хранилища.

  4. Нажмите Собрать.

Получение диагностических файлов

Перейдите по целевому пути к файлу в постоянном хранилище и найдите дамп или файл JFR. Здесь вы можете скачать их на локальный компьютер. Имя созданного файла будет подобным <app-instance>_heapdump_<time-stamp>.hprof для дампа кучи, <app-instance>_threaddump_<time-stamp>.txt для дампа потока и <app-instance>_JFR_<time-stamp>.jfr для файла JFR.

Следующие шаги