Udostępnij za pośrednictwem


Profil aplikacji Azure Monitor Application Insights dla Java

Uwaga

Funkcja Java Profiler jest dostępna w wersji zapoznawczej, począwszy od wersji 3.4.0.

Narzędzie Java Profiler udostępnia system dla:

  • Generowanie profilów narzędzia JDK Flight Recorder (JFR) na żądanie z maszyny wirtualnej Java (JVM).
  • Automatyczne generowanie profilów JFR, gdy z JVM spełnione są określone warunki wyzwalające, takie jak przekroczenie skonfigurowanego progu przez CPU lub pamięć.

Omówienie

Narzędzie Java Profiler używa profilera JFR dostarczonego przez maszynę wirtualną JVM do rejestrowania danych profilowania, umożliwiając użytkownikom pobieranie nagrań JFR w późniejszym czasie i analizowanie ich w celu zidentyfikowania przyczyny problemów z wydajnością.

Te dane są zbierane na żądanie po spełnieniu warunków wyzwalacza. Dostępne wyzwalacze to progi użycia CPU, pamięci, oraz liczby żądań (wyzwalacze umowy dotyczącej poziomu usług). Wyzwalacze żądań monitorują zakresy generowane przez usługę OpenTelemetry i umożliwiają użytkownikowi skonfigurowanie wymagań umowy dotyczącej poziomu usług (SLA) w czasie trwania tych zakresów.

Po osiągnięciu progu zostanie zebrany i przekazany profil skonfigurowanego typu i czasu trwania. Ten profil jest następnie widoczny w okienku wydajności skojarzonego interfejsu użytkownika portalu usługi Application Insights.

Ostrzeżenie

Profiler JFR domyślnie uruchamia profil „profile-without-env-data”. Plik JFR to seria zdarzeń emitowanych przez maszynę wirtualną JVM. Konfiguracja "profile-without-env-data" jest podobna do konfiguracji "profilu", która jest dostarczana z maszyną JVM, jednak niektóre zdarzenia zostały wyłączone, które mogą zawierać poufne informacje o wdrożeniu, takie jak zmienne środowiskowe, argumenty dostarczone do maszyny JVM i procesów uruchomionych w systemie.

Flagi, które nie są już dostępne, to:

  • jdk. JVMInformation
  • jdk. InitialSystemProperty
  • jdk.OSInformation
  • jdk.InitialEnvironmentVariable
  • jdk. SystemProcess

Należy jednak przejrzeć wszystkie włączone flagi, aby upewnić się, że profile nie zawierają poufnych danych.

Zobacz Konfigurowanie zawartości profilu podczas ustawiania niestandardowej konfiguracji profilera.

Wymagania wstępne

  • JVM z funkcją Java Flight Recorder (JFR)

    • Java 8 aktualizacja 262+
    • Java 11+

Ostrzeżenie

JVM OpenJ9 nie są obsługiwane

Użycie

Wyzwalacze

Aby uzyskać bardziej szczegółowy opis różnych dostępnych wyzwalaczy, zobacz Profile production applications in Azure with Application Insights Profiler for .NET (Profilowanie aplikacji produkcyjnych na platformie Azure przy użyciu profilera usługi Application Insights dla platformy .NET).

Agent Java usługi ApplicationInsights monitoruje procesor CPU, pamięć oraz czas trwania żądań, takich jak transakcje biznesowe. W przypadku naruszenia skonfigurowanego progu profil zostaje wyzwolony.

Profil teraz

Przycisk Uruchom Profilowanie znajduje się w interfejsie użytkownika profilera (zobacz Konfigurowanie profilera usługi Application Insights dla platformy .NET). Wybranie tego przycisku natychmiast zażąda utworzenia profilu we wszystkich agentach powiązanych z wystąpieniem usługi Application Insights. Domyślny czas trwania profilowania to dwie minuty. Możesz ją zmienić, przesłaniając periodicRecordingDurationSeconds (zobacz plik konfiguracyjny).

Ostrzeżenie

Wywołanie Profilu teraz spowoduje włączenie funkcji profilera, a usługa Application Insights zastosuje wyzwalacze SLA CPU i pamięci według domyślnych ustawień. Gdy aplikacja naruszy te umowy SLA, usługa Application Insights zbierze profile języka Java. Jeśli chcesz wyłączyć profilowanie później, możesz to zrobić w menu wyzwalacza wyświetlanym w obszarze Instalacja.

Procesor

Próg procesora CPU to procent użycia wszystkich dostępnych rdzeni w systemie.

Na przykład, jeśli jeden z ośmiu rdzeni maszyny zostałby wykorzystany w pełni, oznaczałoby to 12,5% użycia procesora CPU.

Pamięć

Procent pamięci to zajętość bieżącego regionu pamięci starej generacji (OldGen) w stosunku do maksymalnie możliwego rozmiaru regionu.

Zajętość jest oceniana po wykonaniu kolekcji o trwałości. Maksymalny rozmiar stałej generacji to rozmiar, który osiągnęłaby, gdyby sterta maszyny wirtualnej Java (JVM) wzrosła do maksymalnego rozmiaru.

Na przykład wykonaj następujący scenariusz:

  • Sterta Java może wzrosnąć do maksymalnie 1024 MB.
  • Pokolenie tenured może wzrosnąć do 90% sterta.
  • Maksymalny możliwy rozmiar stałej pamięci wynosiłby 922 MB.
  • Próg został ustawiony za pośrednictwem interfejsu użytkownika na 75%, dlatego próg wynosiłby 75% z 922 MB, czyli 691 MB.

W tym scenariuszu profil występuje w następujących okolicznościach:

  • Pełne oczyszczanie pamięci jest wykonywane
  • Zajętość regionów tenured przekracza 691 MB po zbiórce

Żądanie

Wyzwalacze SLA są oparte na OpenTelemetry i inicjują profil, jeśli określone kryteria zostały spełnione.

Każda konfiguracja wyzwalacza jest tworzona w następujący sposób:

  • Name - Unikatowy identyfikator wyzwalacza.
  • Filter — Filtruje żądania zainteresowania dla wyzwalacza.
  • Aggregation - Oblicza stosunek żądań, które naruszyły dany próg.
    • Threshold - Minimalna wartość (w milisekundach), przy której określa się przekroczenie czasu oczekiwania żądania.
    • Minimum samples - Minimalna liczba próbek, które należy zebrać, aby agregacja mogła generować dane. To ustawienie ma na celu zapobieżenie problemom wynikającym z małych rozmiarów próbek.
    • Window - Przedział czasu kroczącego (w milisekundach).
  • Threshold - Wartość progowa (wartość procentowa) zastosowana do danych wyjściowych agregacji. Po przekroczeniu tej wartości inicjowany jest profil.

Na przykład następujący scenariusz wyzwoli profil, jeśli: ponad 75% żądań do określonego punktu dostępu (/users/.*) trwa dłużej niż 30 ms w 60-sekundowym przedziale czasowym, a zebrano co najmniej 100 próbek.

Zrzut ekranu przedstawiający przykład wyzwalacza żądania

Instalacja

Poniższe kroki prowadzą przez proces włączania składnika profilowania na agencie i konfigurowania limitów zasobów, które wyzwalają profil w przypadku naruszenia zabezpieczeń.

Skonfiguruj progi zasobów, które powodują zbieranie profilu:

  1. Przejdź do sekcji Performance ->Profiler w wystąpieniu usługi Application Insights.

    Zrzut ekranu przedstawiający link umożliwiający otwarcie okienka wydajności. Zrzut ekranu przedstawiający przycisk Profiler w okienku Wydajność.

Ostrzeżenie

Przycisk Ślady profilera w prawym dolnym rogu nie jest obsługiwany dla języka Java.

  1. Wybieranie wyzwalaczy

  2. Skonfiguruj wymagane wyzwalacze procesora, pamięci lub żądania (jeśli są włączone) i wybierz Zastosuj.

    Zrzut ekranu przedstawiający ustawienia wyzwalacza.

Ostrzeżenie

Program Java Profiler nie obsługuje wyzwalacza "Próbkowanie". Skonfigurowanie tego ustawienia nie będzie miało żadnego wpływu.

Po wykonaniu tych kroków agent będzie monitorował użycie zasobów twojego procesu i wyzwalał profil po przekroczeniu progu. Po uruchomieniu i zakończeniu profilowania, profil jest dostępny do wglądu z wystąpienia usługi Application Insights w sekcji Performance ->Profiler. Na tym ekranie można pobrać profil, po pobraniu pliku rejestrowania JFR można otworzyć i przeanalizować w wybranym narzędziu, na przykład Oracle JDK Mission Control (JMC).

Zrzut ekranu przedstawiający funkcje i ustawienia strony profilera.

Konfigurowanie

Konfiguracja ustawień wyzwalania profilera Java, takich jak progi i okresy profilowania, jest ustawiana w interfejsie użytkownika Application Insights w obszarze Wydajność>Profiler>Wyzwalacze, zgodnie z opisem w sekcji Instalacja.

Ponadto wiele parametrów można skonfigurować przy użyciu zmiennych środowiskowych i applicationinsights.json pliku konfiguracji.

Konfigurowanie zawartości profilu

Jeśli chcesz podać niestandardową konfigurację profilu, zmień memoryTriggeredSettings oraz cpuTriggeredSettings, aby wskazać ścieżkę do pliku .jfc z wymaganą konfiguracją.

Profile można wygenerować lub edytować w interfejsie użytkownika JDK Mission Control (JMC) w menu Window->Flight Recording Template Manager, a kontrola nad poszczególnymi flagami znajduje się w sekcji Edit->Advanced tego interfejsu użytkownika.

Zmienne środowiskowe

  • APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED: wartość logiczna (wartość domyślna: true)

    Włącza/wyłącza funkcję profilowania. Domyślnie funkcja jest włączona w ramach agenta (od agenta 3.4.9). Jednak mimo że ta funkcja jest włączona w ramach agenta, profile nie są zbierane, chyba że włączono je w Portalu zgodnie z opisem w temacie Instalacja.

Plik konfiguracji

Przykładowa konfiguracja:

{
  "preview": {
    "profiler": {
      "enabled": true,
      "cpuTriggeredSettings": "profile-without-env-data",
      "memoryTriggeredSettings": "profile-without-env-data",
      "manualTriggeredSettings": "profile-without-env-data",
      "enableRequestTriggering": true,
      "periodicRecordingDurationSeconds": 60
    }
  }
}

memoryTriggeredSettings Ta konfiguracja jest używana, jeśli zażądano profilu pamięci. Ta wartość może być jedną z:

  • profile-without-env-data (wartość domyślna). Profil z wyłączonymi niektórymi poufnymi zdarzeniami, szczegóły znajdziesz w sekcji Ostrzeżenia.
  • profile. Używa konfiguracji dostarczanej razem z JFR.
  • Ścieżka do niestandardowego pliku konfiguracji jfc w systemie plików, na przykład /tmp/myconfig.jfc.

cpuTriggeredSettings Ta konfiguracja jest używana, jeśli zażądano profilu procesora CPU. Ta wartość może być jedną z:

  • profile-without-env-data (wartość domyślna). Profil z wyłączonymi niektórymi poufnymi zdarzeniami, szczegóły znajdziesz w sekcji Ostrzeżenia.
  • profile. Używa dostarczanej razem z JFR konfiguracji jfc profile.jfc.
  • Ścieżka do niestandardowego pliku konfiguracji jfc w systemie plików, na przykład /tmp/myconfig.jfc.

manualTriggeredSettings Ta konfiguracja jest używana, jeśli zażądano ręcznego profilu. Ta wartość może być jedną z:

  • profile-without-env-data (wartość domyślna). Profil z wyłączonymi niektórymi poufnymi zdarzeniami, szczegóły znajdziesz w sekcji Ostrzeżenia.
  • profile. Używa dostarczanej razem z JFR konfiguracji jfc profile.jfc.
  • Ścieżka do niestandardowego pliku konfiguracji jfc w systemie plików, na przykład /tmp/myconfig.jfc.

enableRequestTriggering Czy profilowanie JFR powinno być wyzwalane na podstawie konfiguracji żądania. Ta wartość może być jedną z:

  • true Profilowanie zostaje uruchomione, jeśli przekroczony zostanie próg żądania.
  • false (wartość domyślna). Konfiguracja żądania nie wyzwala profilowania.

periodicRecordingDurationSeconds Czas trwania rejestrowania profilowania w sekundach po rozpoczęciu sesji profilowania za pomocą przycisku Profil teraz. Domyślna wartość to 120.

Dalsze kroki