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 서비스 인스턴스입니다. 시작하려면 빠른 시작: 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 시작
다음 명령을 사용하여 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에서 앱의 힙 또는 스레드 덤프를 생성합니다.
Azure Portal에서 대상 앱으로 이동한 다음, 문제 해결을 선택합니다.
문제 해결 창에서 수집하려는 앱 인스턴스 및 덤프 유형을 선택합니다.
파일 경로 필드에서 영구 스토리지의 탑재 경로를 지정합니다.
수집을 선택합니다.
진단 파일 가져오기
영구 스토리지의 대상 파일 경로로 이동하여 덤프/JFR을 찾습니다. 여기에서 로컬 머신에 다운로드할 수 있습니다. 생성된 파일의 이름은 힙 덤프의 <app-instance>_heapdump_<time-stamp>.hprof
, 스레드 덤프의 <app-instance>_threaddump_<time-stamp>.txt
및 JFR 파일의 <app-instance>_JFR_<time-stamp>.jfr
와 비슷합니다.