Używanie ustawień diagnostycznych opcji JVM na potrzeby zaawansowanego rozwiązywania problemów w usłudze Azure Spring Apps
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy: ✔️ Java ❌ C#
Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise
W tym artykule pokazano, jak używać ustawień diagnostycznych za pomocą opcji JVM do przeprowadzania zaawansowanego rozwiązywania problemów w usłudze Azure Spring Apps.
Istnieje kilka parametrów uruchamiania aplikacji opartych na maszynie JVM związanych z zrzutem stert, rejestratorem lotów Java (JFR) i dziennikami odzyskiwania pamięci (GC). W usłudze Azure Spring Apps obsługujemy konfigurację maszyny JVM przy użyciu opcji JVM.
Aby uzyskać więcej informacji na temat konfigurowania parametrów uruchamiania aplikacji opartych na maszynie JVM, zobacz az spring app deployment w dokumentacji referencyjnej interfejsu wiersza polecenia platformy Azure. W poniższych sekcjach przedstawiono kilka przykładów przydatnych wartości parametru --jvm-options
.
Wymagania wstępne
- Wdrożone wystąpienie usługi Azure Spring Apps. Postępuj zgodnie z naszym przewodnikiem Szybki start dotyczącymi wdrażania aplikacji za pośrednictwem interfejsu wiersza polecenia platformy Azure, aby rozpocząć pracę.
- Co najmniej jedna aplikacja została już utworzona w wystąpieniu usługi.
- Własny magazyn trwały zgodnie z opisem w temacie Jak włączyć własny magazyn trwały w usłudze Azure Spring Apps. Ten magazyn służy do zapisywania wygenerowanych plików diagnostycznych. Ścieżki podane w poniższych wartościach parametrów powinny znajdować się w ścieżce instalacji magazynu trwałego powiązanego z aplikacją. Jeśli chcesz użyć ścieżki pod ścieżką instalacji, pamiętaj, aby wcześniej utworzyć ścieżkę podrzędną.
Generowanie zrzutu stert w przypadku braku pamięci
Użyj następującego --jvm-options
parametru, aby wygenerować zrzut stert w przypadku wystąpienia błędu braku pamięci.
--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"
Alternatywą dla określenia ścieżki do folderu zrzutu sterty można podać określoną nazwę pliku. Jednak zdecydowanie zalecamy podanie ścieżki folderu. Jeśli podasz nazwę pliku, polecenie wygeneruje zrzut stert tylko dla pierwszego błędu poza pamięcią, ze względu na ograniczenia formatu pliku HPROF. Jeśli podasz ścieżkę folderu, otrzymasz zrzut sterty w pliku z automatycznie wygenerowaną nazwą dla każdego błędu braku pamięci.
Generowanie dzienników GC
Użyj następującego --jvm-options
parametru, aby wygenerować dzienniki GC. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację JVM.
--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"
Generowanie pliku JFR podczas zamykania
Użyj następującego --jvm-options
parametru, aby wygenerować plik JFR. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację JVM.
--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"
Konfigurowanie ścieżki dla wygenerowanych plików
Aby mieć pewność, że masz dostęp do plików, upewnij się, że ścieżka docelowa wygenerowanego pliku znajduje się w trwałym magazynie powiązanym z aplikacją. Na przykład możesz użyć kodu JSON podobnego do poniższego przykładu podczas tworzenia magazynu trwałego w usłudze Azure Spring Apps.
{
"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
}
}
]
}
Alternatywnie możesz użyć następującego polecenia, aby dołączyć do magazynu trwałego.
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>