다음을 통해 공유


Azure Spring Apps에서 고급 문제 해결을 위해 JVM 옵션의 진단 설정 사용

참고 항목

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

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

이 문서는 Java ❎ C에✅ 적용됩니다.#

이 문서는 기본/표준 ✅ 엔터프라이즈에✅ 적용됩니다.

이 문서에서는 JVM 옵션을 통해 진단 설정을 사용하여 Azure Spring Apps에서 고급 문제 해결을 수행하는 방법을 보여 줍니다.

힙 덤프, JFR(Java Flight Recorder) 및 GC(가비지 수집) 로그와 관련된 여러 JVM 기반 애플리케이션 시작 매개 변수가 있습니다. Azure Spring Apps에서는 JVM 옵션을 사용한 JVM 구성을 지원합니다.

JVM 기반 애플리케이션 시작 매개 변수를 구성하는 방법에 대한 자세한 내용은 Azure CLI 참조 설명서의 az spring app deployment를 참조하세요. 다음 섹션에서는 --jvm-options 매개 변수에 유용한 값의 몇 가지 예제를 제공합니다.

필수 조건

  • 배포된 Azure Spring Apps 서비스 인스턴스입니다. Azure CLI를 통한 앱 배포를 위한 빠른 시작을 수행하여 시작하세요.
  • 해당 서비스 인스턴스에서 이미 하나 이상의 애플리케이션이 생성되었습니다.
  • Azure Spring Apps에서 고유한 영구 스토리지를 사용하도록 설정하는 방법에 설명된 것 같은 사용자 고유의 영구 스토리지. 이 스토리지는 생성된 진단 파일을 저장하는 데 사용됩니다. 아래 매개 변수 값에 제공하는 경로는 앱에 바인딩된 영구 스토리지의 탑재 경로 아래에 있어야 합니다. 탑재 경로 아래에 있는 경로를 사용하려면 하위 경로를 미리 만들어야 합니다.

메모리가 부족할 때 힙 덤프 생성

메모리 부족 오류가 발생할 때 다음 --jvm-options 매개 변수를 사용하여 힙 덤프를 생성합니다.

--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"

힙 덤프 폴더의 경로를 지정하는 대신 특정 파일 이름을 제공할 수 있습니다. 그러나 대신 폴더 경로를 제공하는 것이 좋습니다. 파일 이름을 제공하는 경우 이 명령은 HPROF 파일 형식의 제한으로 인해 첫 번째 메모리 부족 오류에 대해서만 힙 덤프를 생성합니다. 폴더 경로를 제공하는 경우 각 메모리 부족 오류에 대해 자동 생성된 이름의 힙 덤프가 파일에 표시됩니다.

GC 로그 생성

다음 --jvm-options 매개 변수를 사용하여 GC 로그를 생성합니다. 자세한 내용은 공식 JVM 설명서를 참조하세요.

--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"

종료할 때 JFR 파일 생성

다음 --jvm-options 매개 변수를 사용하여 JFR 파일을 생성합니다. 자세한 내용은 공식 JVM 설명서를 참조하세요.

--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"

생성된 파일의 경로 구성

파일에 액세스할 수 있도록 하려면 생성된 파일의 대상 경로가 앱에 바인딩된 영구 스토리지에 있는지 확인합니다. 예를 들어 Azure Spring Apps에서 영구 스토리지를 만들 때 다음 예제와 유사한 JSON을 사용할 수 있습니다.

    {
       "customPersistentDisks": [
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "mountOptions": [
                      "uid=0",
                      "gid=0"
                   ],
                   "readOnly": false
                }
          },
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "readOnly": true
              }
          }
       ]
    }

또는 다음 명령을 사용하여 영구 스토리지에 추가할 수 있습니다.

az spring app append-persistent-storage \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --persistent-storage-type AzureFileVolume \
    --storage-name <storage-resource-name> \
    --share-name <azure-file-share-name> \
    --mount-path <unique-mount-path>

다음 단계