Java Profiler dla usługi Azure Monitor Application Insights
Uwaga
Funkcja Java Profiler jest dostępna w wersji zapoznawczej, począwszy od wersji 3.4.0.
Profiler języka Java usługi Application Insights udostępnia system dla następujących funkcji:
- 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 języka Java usługi Application Insights 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 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 profiler overview (Omówienie profilera).
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 ustawienia profilera). 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.
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:
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 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).
Konfigurowanie
Konfiguracja ustawień wyzwalania profilera, takich jak progi i okresy profilowania, są ustawiane w interfejsie użytkownika usługi ApplicationInsights 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ń memoryTriggeredSettings
element 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 dostarczanejprofile.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 dostarczanejprofile.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 dostarczanejprofile.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?
Profiler java usługi Azure Monitor Application Insights 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.
Automatyczne profilowanie jest wyzwalane naruszenie 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.