Java Profiler for Azure Monitor Application Szczegółowe informacje

Uwaga

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

Narzędzie Application Szczegółowe informacje 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 po spełnieniu określonych warunków wyzwalacza z maszyny wirtualnej JVM, takich jak naruszenie skonfigurowanego progu przez procesor CPU lub pamięć.

Omówienie

Profiler aplikacji Szczegółowe informacje Java używa profilera JFR dostarczonego przez maszynę 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 są progami użycia procesora CPU, użycia pamięci i żądania (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 aplikacji Szczegółowe informacje Portal.

Ostrzeżenie

Profiler JFR domyślnie wykonuje 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 update 262+
    • Java 11+

Ostrzeżenie

Maszyny wirtualne OpenJ9 nie są obsługiwane

Użycie

Wyzwalacze

Aby uzyskać bardziej szczegółowy opis różnych dostępnych wyzwalaczy, zobacz profiler overview (Omówienie profilera).

Aplikacja Szczegółowe informacje Agent Języka Java monitoruje czas trwania procesora CPU, pamięci i żądania, na przykład transakcji biznesowej. W przypadku naruszenia skonfigurowanego progu zostanie wyzwolony profil.

Profilowanie teraz

Przycisk Profil znajduje się teraz w interfejsie użytkownika profilera (zobacz ustawienia profilera). Wybranie tego przycisku natychmiast zażąda profilu we wszystkich agentach dołączonych do wystąpienia usługi Application Szczegółowe informacje. Domyślny czas trwania profilowania to dwie minuty. Możesz ją zmienić, przesłonięć periodicRecordingDurationSeconds (zobacz Plik konfiguracji).

Ostrzeżenie

Wywołanie profilu spowoduje teraz włączenie funkcji profilera, a Szczegółowe informacje aplikacji zastosuje domyślne wyzwalacze umowy SLA procesora CPU i pamięci. Gdy aplikacja naruszy te umowy SLA, Szczegółowe informacje aplikacji 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 CPU

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

Jeśli na przykład jeden rdzeń ośmiu rdzeni maszyny był nasycony procentem procesora CPU, zostanie uznany za 12,5%.

Pamięć

Procent pamięci to bieżący region pamięci (OldGen) w stosunku do maksymalnego możliwego rozmiaru regionu.

Zajętość jest oceniana po wykonaniu ściętej kolekcji. Maksymalny rozmiar ściągniętych regionów jest rozmiarem, jaki byłby, 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 ściągnięty wynosiłby 922 mb.
  • Próg został ustawiony za pośrednictwem interfejsu użytkownika na 75%, dlatego próg wynosiłby 75% 922 mb, 691 mb.

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

  • Pełne odzyskiwanie pamięci jest wykonywane
  • Zajętość regionów tenured przekracza 691 mb po kolekcji

Żądanie

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

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), w której występuje naruszenie żądania.
    • Minimum samples - Minimalna liczba próbek, które należy zebrać w celu agregacji w celu utworzenia danych, to ustawienie zapobiega wyzwalaniu małych rozmiarów próbek.
    • Window - Przedział czasu kroczącego (w milisekundach).
  • Threshold - Wartość progowa (wartość procentowa) zastosowana do danych wyjściowych agregacji. Jeśli ta wartość zostanie przekroczona, zostanie zainicjowany profil.

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

Screenshot of request trigger sample

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

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

    1. Przejdź do sekcji Performance - Profiler (Wydajność —> profiler) wystąpienia aplikacji Szczegółowe informacje. Screenshot of the link to open performance pane.Screenshot of the Profiler button from the Performance pane.

    2. Wybierz pozycję "Wyzwalacze"

    3. Skonfiguruj wymagane wyzwalacze procesora CPU, pamięci lub żądania (jeśli jest włączone) i wybierz pozycję Zastosuj. Screenshot of trigger settings

Ostrzeżenie

Profiler języka Java 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 procesu i wyzwalać profil po przekroczeniu progu. Po wyzwoleniu i ukończeniu profilu można go wyświetlić z poziomu wystąpienia aplikacji Szczegółowe informacje 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).

Screenshot of profiler page features and settings.

Konfigurowanie

Konfiguracja ustawień wyzwalania profilera, takich jak progi i okresy profilowania, są ustawiane w interfejsie użytkownika aplikacji Szczegółowe informacje w obszarze Wydajność, Profiler, Wyzwalacze interfejs użytkownika zgodnie z opisem w temacie 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ć konfigurację profilu niestandardowego, zmień memoryTriggeredSettingselement i cpuTriggeredSettings , aby podać ścieżkę do .jfc pliku z wymaganą konfiguracją.

Profile można wygenerować/edytować w interfejsie użytkownika JDK Mission Control (JMC) w Window->Flight Recording Template Manager menu i kontrolować poszczególne flagi znajduje się wewnątrz Edit->Advanced tego interfejsu użytkownika.

Zmienne środowiskowe

  • APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED: wartość logiczna (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 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 pewnymi poufnymi zdarzeniami, zobacz sekcję Ostrzeżenie, aby uzyskać szczegółowe informacje.
  • profile. Używa konfiguracji dostarczanej profile.jfc 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 pewnymi poufnymi zdarzeniami, zobacz sekcję Ostrzeżenie, aby uzyskać szczegółowe informacje.
  • profile. Używa konfiguracji jfc dostarczanej profile.jfc z JFR.
  • Ś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 pewnymi poufnymi zdarzeniami, zobacz sekcję Ostrzeżenie, aby uzyskać szczegółowe informacje.
  • profile. Używa konfiguracji jfc dostarczanej profile.jfc z JFR.
  • Ś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 jest wyzwalane, jeśli zostanie naruszony próg wyzwalacza żądania.
  • false (wartość domyślna). Konfiguracja żądania nie wyzwala profilowania.

periodicRecordingDurationSeconds Czas trwania rejestrowania profilowania w sekundach po uruchomieniu sesji profilowania przy użyciu przycisku Profil teraz . Domyślna wartość to 120.

Często zadawane pytania

Co to jest profilowanie aplikacji usługi Azure Monitor Szczegółowe informacje Java?

Profiler aplikacji usługi Azure Monitor Szczegółowe informacje Java używa narzędzia Java Flight Recorder (JFR) do profilowania aplikacji przy użyciu dostosowanej konfiguracji.

Co to jest narzędzie Java Flight Recorder?

Java Flight Recorder (JFR) to narzędzie do zbierania danych profilowania uruchomionej aplikacji Java. JFR jest zintegrowany z maszyną wirtualną Java (JVM) i służy do rozwiązywania problemów z wydajnością. Dowiedz się więcej o środowisku uruchomieniowym Java SE JFR.

Jaki jest wpływ na cenę i/lub opłatę licencyjną za włączenie profilowania aplikacji Szczegółowe informacje Java?

Profilowanie w języku Java to bezpłatna funkcja z Szczegółowe informacje aplikacji. Cennik Szczegółowe informacje aplikacji usługi Azure Monitor jest oparty na kosztach pozyskiwania.

Które informacje o profilowaniu języka Java są zbierane?

Dane profilowania zebrane przez JFR obejmują: dane profilowania metody i wykonywania, dane odzyskiwania pamięci i profile blokady.

Jak mogę używać usługi App Szczegółowe informacje Profilowanie Języka Java i wizualizować dane?

Nagrywanie JFR można wyświetlać i analizować za pomocą preferowanego narzędzia, na przykład Java Mission Control (JMC).

Czy diagnostyka wydajności i zalecenia dotyczące naprawiania są udostępniane w usłudze App Szczegółowe informacje Profilowanie w języku Java?

"Diagnostyka wydajności i zalecenia" to nowa funkcja, która jest dostępna natychmiast po Szczegółowe informacje diagnostyki Języka Java aplikacji. Możesz zarejestrować się w celu wyświetlenia wersji zapoznawczej tej funkcji. Nagrywanie JFR można wyświetlić za pomocą narzędzia Java Mission Control (JMC).

Jaka jest różnica między profilowaniem na żądanie i automatycznym profilowaniem Języka Java w usłudze App Szczegółowe informacje?

Profilowanie na żądanie jest wyzwalane przez użytkownika w czasie rzeczywistym, podczas gdy automatyczne profilowanie jest ze wstępnie skonfigurowanymi wyzwalaczami.

Użyj opcji Profilowanie na żądanie za pomocą opcji Profilowanie na żądanie. Profil Teraz natychmiast profiluje wszystkich agentów dołączonych do wystąpienia usługi Application Szczegółowe informacje.

Automatyczne profilowanie jest wyzwalane naruszenie progu zasobu.

Które wyzwalacze profilowania Języka Java można skonfigurować?

Program Application Szczegółowe informacje Java Agent obsługuje obecnie monitorowanie użycia procesora CPU i pamięci. Próg procesora CPU jest konfigurowany jako procent wszystkich dostępnych rdzeni na maszynie. Pamięć jest bieżącym regionem pamięci (OldGen) w stosunku do maksymalnego możliwego rozmiaru regionu.

Jakie są wymagania wstępne wymagane do włączenia profilowania języka Java?

Zapoznaj się z wymaganiami wstępnymi w górnej części tego artykułu.

Czy mogę używać profilowania Języka Java dla aplikacji mikrousług?

Tak, możesz profilować maszynę wirtualną JVM z uruchomionymi mikrousługami przy użyciu JFR.