Azure Spring Apps에서의 힙 덤프 및 스레드 덤프의 수동 캡처 및 Java Flight Recorder 사용

참고 항목

기본, 표준엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.

표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.

이 문서의 적용 대상: ✔️ 기본/표준 ✔️ 엔터프라이즈

이 문서에서는 힙 덤프 또는 스레드 덤프를 수동으로 생성하는 방법과 JFR(Java Flight Recorder)을 시작하는 방법을 설명합니다.

효과적인 문제 해결은 프로덕션 환경에서 문제를 해결하고 비즈니스를 온라인 상태로 유지할 수 있도록 하는 데 중요합니다. Azure Spring Apps는 애플리케이션 로그 스트리밍 및 쿼리, 풍부한 메트릭 방출, 경고, 분산 추적 등을 제공합니다. 그러나 대기 시간이 높거나 JVM 힙 누수가 많거나 CPU 사용량이 높은 요청에 대한 경고가 표시되는 경우 라스트 마일 솔루션이 없습니다. 따라서 수동으로 힙 덤프를 생성하고, 스레드 덤프를 생성하고, JFR을 시작할 수 있도록 지원합니다.

필수 조건

힙 덤프 생성

다음 명령을 사용하여 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 시작

다음 명령을 사용하여 Azure Spring Apps에서 앱에 대한 JFR을 시작합니다.

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 Portal을 사용하여 덤프 생성

다음 단계를 사용하여 Azure Spring Apps에서 앱의 힙 또는 스레드 덤프를 생성합니다.

  1. Azure Portal에서 대상 앱으로 이동한 다음, 문제 해결을 선택합니다.

    문제 해결 단추가 강조 표시된 앱 개요 페이지를 보여 주는 Azure Portal 스크린샷.

  2. 문제 해결 창에서 수집하려는 앱 인스턴스 및 덤프 유형을 선택합니다.

    Azure Portal 문제 해결 창을 보여 주는 스크린샷.

  3. 파일 경로 필드에서 영구 스토리지의 탑재 경로를 지정합니다.

  4. 수집을 선택합니다.

진단 파일 가져오기

영구 스토리지의 대상 파일 경로로 이동하여 덤프/JFR을 찾습니다. 여기에서 로컬 머신에 다운로드할 수 있습니다. 생성된 파일의 이름은 힙 덤프의 <app-instance>_heapdump_<time-stamp>.hprof, 스레드 덤프의 <app-instance>_threaddump_<time-stamp>.txt 및 JFR 파일의 <app-instance>_JFR_<time-stamp>.jfr와 비슷합니다.

다음 단계