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

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.

  1. W witrynie Azure Portal przejdź do aplikacji docelowej, a następnie wybierz pozycję Rozwiązywanie problemów.

    Zrzut ekranu witryny Azure Portal przedstawiający stronę Przegląd aplikacji z wyróżnionym przyciskiem Rozwiązywanie problemów.

  2. W okienku Rozwiązywanie problemów wybierz wystąpienie aplikacji i typ zrzutu, który chcesz zebrać.

    Zrzut ekranu przedstawiający okienko Rozwiązywanie problemów z witryną Azure Portal.

  3. W polu Ścieżka pliku określ ścieżkę instalacji magazynu trwałego.

  4. 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.

Następne kroki