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

참고

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상: ✔️ Java ❌ C#

이 문서의 적용 대상: ✔️ 기본/표준 계층 ✔️ Enterprise 계층

이 문서에서는 힙 덤프 또는 스레드 덤프를 수동으로 생성하는 방법과 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에서 대상 앱으로 이동한 다음, 문제 해결을 선택합니다.
  2. 문제 해결 창에서 수집하려는 앱 인스턴스 및 덤프 유형을 선택합니다.
  3. 파일 경로 필드에서 영구 스토리지의 탑재 경로를 지정합니다.
  4. 수집을 선택합니다.

진단 파일 가져오기

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

다음 단계