Przechwytywanie zrzutu sterty i zrzutu wątku ręcznie i używanie narzędzia Java Flight Recorder 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: ✔️ Podstawowa/Standardowa ✔️ Enterprise
W tym artykule opisano sposób ręcznego generowania zrzutu stertowego lub zrzutu wątku oraz sposobu uruchamiania narzędzia Java Flight Recorder (JFR).
Skuteczne rozwiązywanie problemów ma kluczowe znaczenie dla zapewnienia, że możesz rozwiązać problemy w środowiskach produkcyjnych i utrzymać swoją firmę w trybie online. Usługa Azure Spring Apps udostępnia przesyłanie strumieniowe dzienników aplikacji i wykonywanie zapytań, zaawansowane metryki emitujące, alerty, śledzenie rozproszone itd. Jednak w przypadku otrzymywania alertów dotyczących żądań z dużym opóźnieniem, wyciekiem stert JVM lub wysokim użyciem procesora CPU nie ma rozwiązania z ostatniej mili. Z tego powodu umożliwiliśmy ręczne generowanie zrzutu stert, generowanie zrzutu wątku i uruchamianie JFR.
Wymagania wstępne
- Wdrożone wystąpienie usługi Azure Spring Apps. Aby rozpocząć, zobacz Szybki start: wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps.
- 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
Użyj następującego polecenia, aby wygenerować zrzut stert aplikacji w usłudze 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>
Generowanie zrzutu wątku
Użyj następującego polecenia, aby wygenerować zrzut wątków aplikacji w usłudze 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>
Uruchamianie JFR
Użyj następującego polecenia, aby uruchomić JFR dla aplikacji w usłudze Azure Spring Apps.
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>
Wartość domyślna to duration
60 sekund.
Generowanie zrzutu przy użyciu witryny Azure Portal
Wykonaj poniższe kroki, aby wygenerować stertę lub zrzut wątków aplikacji w usłudze Azure Spring Apps.
W witrynie Azure Portal przejdź do aplikacji docelowej, a następnie wybierz pozycję Rozwiązywanie problemów.
W okienku Rozwiązywanie problemów wybierz wystąpienie aplikacji i typ zrzutu, który chcesz zebrać.
W polu Ścieżka pliku określ ścieżkę instalacji magazynu trwałego.
Wybierz pozycję Zbieraj.
Pobieranie plików diagnostycznych
Przejdź do docelowej ścieżki pliku w magazynie trwałym i znajdź zrzut/JFR. Stamtąd możesz pobrać je na komputer lokalny. Nazwa wygenerowanego pliku będzie podobna do <app-instance>_heapdump_<time-stamp>.hprof
zrzutu stert, <app-instance>_threaddump_<time-stamp>.txt
zrzutu wątku i <app-instance>_JFR_<time-stamp>.jfr
pliku JFR.