Java Profiler pro Přehledy aplikací služby Azure Monitor

Poznámka:

Funkce Java Profiler je ve verzi Preview počínaje verzí 3.4.0.

Application Přehledy Java Profiler poskytuje systém pro:

  • Generování profilů JDK Flight Recorder (JFR) na vyžádání z prostředí Java Virtual Machine (JVM).
  • Automatické generování profilů JFR při splnění určitých podmínek triggeru z prostředí JVM, jako je například procesor nebo paměť, které porušují nakonfigurovanou prahovou hodnotu.

Přehled

Application Přehledy Java profiler používá profiler JFR poskytovaný JVM k zaznamenávání dat profilace, což uživatelům umožňuje stáhnout nahrávky JFR později a analyzovat je, aby identifikovali příčinu problémů s výkonem.

Tato data se shromažďují na vyžádání, když jsou splněny podmínky triggeru. Dostupné triggery jsou prahové hodnoty oproti využití procesoru, spotřebě paměti a žádosti (triggery smlouvy o úrovni služeb). Triggery požadavků monitorují rozsahy generované OpenTelemetry a umožňují uživateli konfigurovat požadavky na smlouvu o úrovni služeb (SLA) po dobu trvání těchto rozsahů.

Po dosažení prahové hodnoty se shromáždí a nahraje profil nakonfigurovaného typu a doby trvání. Tento profil se pak zobrazí v podokně výkonu přidruženého uživatelského rozhraní aplikace Přehledy portálu.

Upozorňující

Profiler JFR ve výchozím nastavení spustí profil profile profile-without-env-data. Soubor JFR je řada událostí vygenerovaných prostředím JVM. Konfigurace profile-without-env-data je podobná konfiguraci profilu, která se dodává s prostředím JVM, ale má zakázané události, které mají potenciál obsahovat citlivé informace o nasazení, jako jsou proměnné prostředí, argumenty poskytnuté prostředím JVM a procesy spuštěné v systému.

Příznaky, které už nejsou k dispozici, jsou:

  • Jdk. JVMInformation
  • Jdk. InitialSystemProperty
  • Jdk. OSInformation
  • Jdk. InitialEnvironmentVariable
  • Jdk. SystemProcess

Měli byste ale zkontrolovat všechny povolené příznaky, abyste měli jistotu, že profily neobsahují citlivá data.

Viz Konfigurace obsahu profilu při nastavení vlastní konfigurace profileru.

Požadavky

  • JVM s funkcí Java Flight Recorder (JFR)
    • Aktualizace Javy 8 262 nebo novější
    • Java 11 a novější

Upozorňující

OpenJ9 JVM se nepodporuje.

Využití

Aktivační události

Podrobnější popis různých dostupných triggerů najdete v přehledu profileru.

Aplikace Přehledy agent Java monitoruje dobu trvání procesoru, paměti a požadavku, jako je například obchodní transakce. Pokud dojde k porušení nakonfigurované prahové hodnoty, aktivuje se profil.

Profil

Tlačítko Profil se teď nachází v uživatelském rozhraní profileru (viz nastavení profileru). Výběrem tohoto tlačítka okamžitě požádáte o profil ve všech agentech připojených k instanci Přehledy aplikace. Výchozí doba profilace je dvě minuty. Můžete ho změnit přepsáním periodicRecordingDurationSeconds (viz Konfigurační soubor).

Upozorňující

Vyvolání profilu teď povolí funkci profileru a Přehledy aplikace použije výchozí aktivační události SLA procesoru a paměti. Když vaše aplikace tyto smlouvy SLA překročí, aplikace Přehledy shromáždí profily Javy. Pokud chcete profilaci zakázat později, můžete to udělat v nabídce triggeru zobrazenou v části Instalace.

Procesor

Prahová hodnota procesoru je procento využití všech dostupných jader v systému.

Pokud by například jedno jádro osmijádrový počítač saturovalo procento procesoru, považuje se za 12,5 %.

Memory (Paměť)

Procento paměti je aktuální obsazená oblast paměti Tenured (OldGen) s maximální možnou velikostí oblasti.

Obsazenost se vyhodnocuje po provedení tenurované kolekce. Maximální velikost tenantované oblasti je velikost, která by byla v případě, že halda virtuálního počítače Java (JVM) vzrostla na maximální velikost.

Například použijte následující scénář:

  • Halda Javy se může zvětšit na maximálně 1 024 mb.
  • Tenured Generation může růst až na 90 % haldy.
  • Maximální možná velikost tenanta by byla 922 mb.
  • Prahová hodnota byla nastavena prostřednictvím uživatelského rozhraní na 75 %, proto by vaše prahová hodnota byla 75 % z 922 mb, 691 mb.

V tomto scénáři dojde k profilu za následujících okolností:

  • Spustí se úplné uvolňování paměti.
  • Obsazenost v oblasti Tenured je vyšší než 691 mb po sběru.

Žádost

Triggery SLA jsou založené na OpenTelemetry a iniciují profil, pokud jsou splněna určitá kritéria.

Každá konfigurace jednotlivých aktivačních událostí se vytvoří takto:

  • Name – Jedinečný identifikátor aktivační události.
  • Filter – Filtruje požadavky, které jsou pro aktivační událost zajímavé.
  • Aggregation - Vypočítá poměr požadavků, které překročily danou prahovou hodnotu.
    • Threshold - Minimální hodnota (v milisekundách), při které se zjistí porušení požadavků.
    • Minimum samples - Minimální počet vzorků, které musí být shromážděny pro agregaci pro výrobu dat, je toto nastavení zabránit aktivaci malých velikostí vzorků.
    • Window - Klouzavé časové období (v milisekundách).
  • Threshold - Prahová hodnota (procento) použitá na výstup agregace. Pokud je tato hodnota překročena, zahájí se profil.

Například následující scénář by aktivoval profil, pokud: více než 75 % požadavků na konkrétní koncový bod (/users/.*) trvá déle než 30 ms v 60sekundovém okně, když bylo shromážděno alespoň 100 vzorků.

Screenshot of request trigger sample

Instalace

Následující kroky vás provedou povolením součásti profilace v agentu a konfigurací limitů prostředků, které v případě porušení zabezpečení aktivují profil.

  1. Nakonfigurujte prahové hodnoty prostředků, které způsobují shromažďování profilu:

    1. Přejděte do části Výkon –> Profiler instance Přehledy aplikace. Screenshot of the link to open performance pane.Screenshot of the Profiler button from the Performance pane.

    2. Vyberte Triggery.

    3. Nakonfigurujte požadované aktivační události procesoru, paměti nebo požadavku (pokud jsou povolené) a vyberte Použít. Screenshot of trigger settings

Upozorňující

Profiler Java nepodporuje trigger vzorkování. Konfigurace tohoto nastavení nebude mít žádný vliv.

Po dokončení těchto kroků agent bude monitorovat využití prostředků vašeho procesu a po překročení prahové hodnoty aktivovat profil. Po aktivaci a dokončení profilu je možné ho zobrazit z instance Přehledy aplikace v části Výkon –> Profiler. Z této obrazovky si můžete profil stáhnout, jakmile si stáhnete soubor záznamu JFR, můžete ho otevřít a analyzovat v nástroji podle vašeho výběru, například Oracle JDK Mission Control (JMC).

Screenshot of profiler page features and settings.

Konfigurace

Konfigurace nastavení triggeru profileru, jako jsou prahové hodnoty a období profilace, se nastavuje v uživatelském rozhraní aplikace Přehledy v uživatelském rozhraní výkonu, profileru a uživatelského rozhraní triggerů, jak je popsáno v instalaci.

Kromě toho je možné nakonfigurovat mnoho parametrů pomocí proměnných prostředí a konfiguračního applicationinsights.json souboru.

Konfigurace obsahu profilu

Pokud chcete zadat vlastní konfiguraci profilu, upravte memoryTriggeredSettingsa cpuTriggeredSettings zadejte cestu k .jfc souboru s požadovanou konfigurací.

Profily lze generovat nebo upravovat v uživatelském rozhraní JDK Mission Control (JMC) v Window->Flight Recording Template Manager nabídce a ovládání jednotlivých příznaků se nachází uvnitř Edit->Advanced tohoto uživatelského rozhraní.

Proměnné prostředí

  • APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED: logická hodnota (výchozí: true) Povolí nebo zakáže funkci profilace. Ve výchozím nastavení je funkce povolená v rámci agenta (od agenta 3.4.9). I když je ale tato funkce povolená v rámci agenta, profily se neshromáždí, pokud nejsou povolené na portálu, jak je popsáno v instalaci.

Konfigurační soubor

Příklad konfigurace:

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

memoryTriggeredSettings Tato konfigurace se používá, pokud je požadován profil paměti. Tato hodnota může být jedna z těchto hodnot:

  • profile-without-env-data (výchozí hodnota). Profil s určitými citlivými událostmi je zakázaný. Podrobnosti najdete v části Upozornění.
  • profile. profile.jfc Používá konfiguraci, která se dodává s JFR.
  • Cesta k vlastnímu konfiguračnímu souboru jfc v systému souborů, /tmp/myconfig.jfcnapříklad .

cpuTriggeredSettings Tato konfigurace se používá, pokud je požadován profil procesoru. Tato hodnota může být jedna z těchto hodnot:

  • profile-without-env-data (výchozí hodnota). Profil s určitými citlivými událostmi je zakázaný. Podrobnosti najdete v části Upozornění.
  • profile. profile.jfc Používá konfiguraci jfc, která se dodává s JFR.
  • Cesta k vlastnímu konfiguračnímu souboru jfc v systému souborů, /tmp/myconfig.jfcnapříklad .

manualTriggeredSettings Tato konfigurace se používá, pokud je požadován ruční profil. Tato hodnota může být jedna z těchto hodnot:

  • profile-without-env-data (výchozí hodnota). Profil s určitými citlivými událostmi je zakázaný. Podrobnosti najdete v části Upozornění.
  • profile. profile.jfc Používá konfiguraci jfc, která se dodává s JFR.
  • Cesta k vlastnímu konfiguračnímu souboru jfc v systému souborů, /tmp/myconfig.jfcnapříklad .

enableRequestTriggering Určuje, jestli se profilace JFR má aktivovat na základě konfigurace požadavku. Tato hodnota může být jedna z těchto hodnot:

  • true Profilace se aktivuje, pokud dojde k porušení prahové hodnoty triggeru požadavku.
  • false (výchozí hodnota). Konfigurace požadavku neaktivuje profilaci.

periodicRecordingDurationSeconds Doba trvání záznamu profilace v sekundách, kdy se relace profilace spustí pomocí tlačítka Profilovat . Výchozí hodnota je 120.

Nejčastější dotazy

Co je profilace aplikací služby Azure Monitor Přehledy Java?

Azure Monitor Application Přehledy Java profiler používá k profilování aplikace pomocí přizpůsobené konfigurace Java Flight Recorder (JFR).

Co je Java Flight Recorder?

Java Flight Recorder (JFR) je nástroj pro shromažďování dat profilace spuštěné aplikace Java. JFR je integrovaný do prostředí Java Virtual Machine (JVM) a slouží k řešení potíží s výkonem. Přečtěte si další informace o modulu Runtime Java SE JFR.

Jaký je dopad na cenu nebo licenční poplatky za povolení profilace v Javě Přehledy aplikací?

Profilace v Javě je bezplatná funkce s aplikačními Přehledy. Ceny Přehledy aplikací služby Azure Monitor jsou založené na nákladech na příjem dat.

Které informace o profilaci v Javě se shromažďují?

Profilace dat shromažďovaných JFR zahrnuje: data profilace metod a provádění, data uvolňování paměti a profily zámků.

Jak můžu používat profilaci Aplikace Přehledy Javu a vizualizovat data?

Záznam JFR můžete zobrazit a analyzovat pomocí preferovaného nástroje, například Java Mission Control (JMC).

Poskytují se doporučení k diagnostice výkonu a řešení s profilací Aplikace Přehledy Javě?

Diagnostika výkonu a doporučení je nová funkce, která je dostupná hned po Přehledy Diagnostice Javy aplikace. Tuto funkci si můžete zaregistrovat ve verzi Preview. Nahrávku JFR si můžete prohlédnout pomocí JMC (Java Mission Control).

Jaký je rozdíl mezi on-demand a automatickou profilací v Javě v Přehledy aplikací?

Na vyžádání je profilace aktivovaná uživatelem v reálném čase, zatímco automatické profilování je s předkonfigurovanými aktivačními událostmi.

Pro možnost profilování na vyžádání použijte profilaci . Profil teď okamžitě profiluje všechny agenty, kteří jsou připojeni k instanci Přehledy aplikace.

Automatizované profilování se aktivuje porušením prahové hodnoty prostředku.

Které triggery profilace v Javě můžu nakonfigurovat?

Application Přehledy Java Agent v současné době podporuje monitorování využití procesoru a paměti. Prahová hodnota procesoru je nakonfigurovaná jako procento všech dostupných jader na počítači. Paměť je aktuální obsazená oblast paměti Tenured (OldGen) s maximální možnou velikostí oblasti.

Jaké jsou požadavky na povolení profilace Java?

Projděte si požadavky v horní části tohoto článku.

Můžu pro aplikaci mikroslužeb používat profilaci Java?

Ano, pomocí JFR můžete profilovat prostředí JVM se spuštěnými mikroslužbami.