Udostępnij za pośrednictwem


Profiler usługi Application Insights usługi Azure Monitor dla języka 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 po spełnieniu określonych warunków wyzwalacza z maszyny wirtualnej JVM, takich jak naruszenie skonfigurowanego progu przez procesor 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 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 portalu usługi Application Insights.

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 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 Języka Java usługi ApplicationInsights 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 Konfigurowanie profilera usługi Application Insights dla platformy .NET). Wybranie tego przycisku natychmiast zażąda profilu we wszystkich agentach dołączonych do wystąpienia usługi Application Insights. 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 usługa Application Insights zastosuje domyślne wyzwalacze umowy SLA procesora CPU i pamięci. 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 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.

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 wystąpienia 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ść.

  2. Wybieranie wyzwalaczy

  3. Skonfiguruj wymagane wyzwalacze procesora CPU, pamięci lub żądania (jeśli jest włączone) i wybierz pozycję 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 procesu i wyzwalać profil po przekroczeniu progu. Po wyzwoleniu i zakończeniu profilowania można go wyświetlić 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 języka Java, takich jak progi i okresy profilowania, są ustawiane w interfejsie użytkownika usługi Application Insights w obszarze Wyzwalacze profilera>wydajności>, 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 (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 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 java usługi Application Insights w usłudze Azure Monitor?

Narzędzie Java Profiler 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 java usługi App Insights?

Profilowanie w języku Java to bezpłatna funkcja z usługą Application Insights. Cennik usługi Azure Monitor Application Insights 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ć profilowania Java usługi App Insights 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ą dostarczane z profilowaniem Java usługi App Insights?

"Diagnostyka wydajności i zalecenia" to nowa funkcja, która jest dostępna zaraz po diagnostyce Języka Java usługi Application Insights. 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 Insights?

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

Profilowanie automatyczne jest wyzwalane przez osiągnięcie progu zasobu.

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

Agent java usługi Application Insights 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.