Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anteckning
Java Profiler-funktionen är i förhandsversion från och med 3.4.0.
Java Profiler tillhandahåller ett system för:
- Generera JDK Flight Recorder-profiler (JFR) på begäran från JVM (Java Virtual Machine).
- Generera JFR-profiler automatiskt när vissa utlösarvillkor uppfylls från JVM, till exempel CPU eller minne som överskrider ett konfigurerat tröskelvärde.
Översikt
Java Profiler använder JFR-profileraren som tillhandahålls av JVM för att registrera profileringsdata, så att användarna kan ladda ned JFR-inspelningarna vid ett senare tillfälle och analysera dem för att identifiera orsaken till prestandaproblem.
Dessa data samlas in på begäran när utlösarvillkor uppfylls. De tillgängliga utlösarna är tröskelvärden för cpu-användning, minnesförbrukning och begäran (tjänstnivåavtalsutlösare). Begäranstriggers övervakar spann som genereras av OpenTelemetry och tillåter användaren att konfigurera servicenivåavtalskrav (SLA) över dessa spanns varaktighet.
När ett tröskelvärde nås samlas en profil av den konfigurerade typen och varaktigheten in och laddas upp. Den här profilen visas sedan i prestandafönstret i det associerade Application Insights Portal-användargränssnittet.
Varning
Som standard kör JFR-profileraren profilen "profile-without-env-data". En JFR-fil är en serie händelser som genereras av JVM. Konfigurationen "profile-without-env-data" liknar den profilkonfiguration som levereras med JVM, men har inaktiverat vissa händelser som kan innehålla känslig distributionsinformation, till exempel miljövariabler, argument som tillhandahålls till JVM och processer som körs i systemet.
Flaggorna som inte längre är tillgängliga är:
- jdk. JVMInformation
- jdk. InitialSystemProperty
- jdk. OSInformation
- jdk.InitialEnvironmentVariable
- jdk. SystemProcess
Du bör dock granska alla aktiverade flaggor för att säkerställa att profiler inte innehåller känsliga data.
Se Konfigurera profilinnehåll när du anger en anpassad profileringskonfiguration.
Förutsättningar
- JVM med JFR-kapacitet (Java Flight Recorder) - Java 8-uppdatering 262+
- Java 11+
 
Varning
OpenJ9 JVM stöds inte
Förbrukning
Utlösare
Mer detaljerad beskrivning av de olika utlösare som är tillgängliga finns i Profilproduktionsprogram i Azure med Application Insights Profiler för .NET.
ApplicationInsights Java-agenten övervakar cpu-, minnes- och begärandevaraktighet, till exempel en affärstransaktion. Om det överskrider ett konfigurerat tröskelvärde utlöses en profil.
Profil nu
Knappen Profil nu finns i användargränssnittet profiler (se Konfigurera Application Insights Profiler för .NET). Om du väljer den här knappen begärs omedelbart en profil i alla agenter som är kopplade till Application Insights-instansen. Standardvaraktigheten för profilering är två minuter. Du kan ändra det genom att periodicRecordingDurationSeconds åsidosätta (se Konfigurationsfil).
Varning
Om du anropar profilen nu aktiveras profileringsfunktionen, och Application Insights tillämpar standardutlösare för CPU och minne. När ditt program bryter mot dessa serviceavtal samlar Application Insights in Java-profiler. Om du vill inaktivera profilering senare kan du göra det i utlösarmenyn som visas i Installation.
CPU (centralenhet)
Cpu-tröskelvärdet är en procentandel av användningen av alla tillgängliga kärnor i systemet.
Om en kärna av en åttakärnig dator till exempel var mättad skulle CPU-procentandelen betraktas som 12,5 %.
Minne
Minnesprocent är den aktuella beläggningen i Tenured-minnesregionen (OldGen) jämfört med den maximala möjliga storleken för regionen.
Beläggningen utvärderas efter att en samling över tidsenlighet har utförts. Den maximala storleken för den tidsbetingade regionen är den storlek det skulle vara om JVM-heapen (Java Virtual Machine) växte till sin maximala storlek.
Anta till exempel följande scenario:
- Java-heapen kan växa till högst 1 024 MB.
- Tenured Generation kan växa till 90% av högen.
- Den maximala möjliga storleken för tenured skulle vara 922 mb.
- Tröskelvärdet angavs via användargränssnittet till 75 %, därför skulle tröskelvärdet vara 75 % av 922 mb, 691 mb.
I det här scenariot uppträder en profil under följande omständigheter:
- Fullständig sopinsamling utförs
- Beläggningen för *tenured-regioner* är över 691 MB efter insamlingen
Förfrågan
SLA-utlösare baseras på OpenTelemetry och de initierar en profil om vissa kriterier uppfylls.
Varje enskild utlösarkonfiguration skapas på följande sätt:
- 
              Name– En unik identifierare för utlösaren.
- 
              Filter– Filtrerar relevanta förfrågningar för triggern.
- 
              Aggregation– Beräknar förhållandet mellan begäranden som har överskridit ett visst tröskelvärde.- 
              Threshold- Ett minimivärde (i millisekunder) vid vilken en överträdelse av en begäran fastställs.
- 
              Minimum samples- Det minsta antalet mätvärden som måste samlas in för att aggregeringen ska kunna ge data. Denna inställning är till för att förhindra att beräkningar triggas av små urvalsstorlekar.
- 
              Window– Rullande tidsfönster (i millisekunder).
 
- 
              
- 
              Threshold– Tröskelvärdet (procent) som tillämpas på aggregeringsutdata. Om det här värdet överskrids initieras en profil.
Följande scenario utlöser till exempel en profil om mer än 75 % av begäranden till en specifik slutpunkt (/användare/.*) tar längre tid än 30 ms inom ett 60-sekundersfönster, när minst 100 exempel samlades in.
              
               
              
              
            
Installation
Följande steg vägleder dig genom att aktivera profilkomponenten på agenten och konfigurera resursgränser som utlöser en profil om den överträds.
Konfigurera de resurströsklar som gör att en profil samlas in:
Varning
Knappen Profiler-spårningar längst ned till höger stöds inte för Java.
- Välj utlösare 
- Konfigurera de processor-, minnes- eller begärandeutlösare som krävs (om det är aktiverat) och välj Använd.   
Varning
Java Profiler stöder inte utlösaren "Sampling". Att konfigurera detta har ingen effekt.
När de här stegen har slutförts övervakar agenten resursanvändningen i din process och utlöser en profil när tröskelvärdet överskrids. När en profil utlöses och slutförs kan den visas från Application Insights-instansen i avsnittet Prestanda ->Profiler . Från den skärmen kan profilen laddas ned, när du har laddat ned JFR-inspelningsfilen kan öppnas och analyseras inom ett verktyg som du väljer, till exempel Oracle JDK Mission Control (JMC).
Konfiguration
Konfiguration av Java Profiler-utlösarinställningar, till exempel tröskelvärden och profileringsperioder, anges i Application Insights-användargränssnittet under enligt beskrivningen i >
Dessutom kan många parametrar konfigureras med hjälp av miljövariabler och konfigurationsfilen applicationinsights.json .
Konfigurera profilinnehåll
Om du vill ange en anpassad profilkonfiguration, ändra memoryTriggeredSettings och cpuTriggeredSettings för att ange sökvägen till en .jfc-fil med din önskade konfiguration.
Profiler kan genereras/redigeras i JDK Mission Control-användargränssnittet (JMC) under Window->Flight Recording Template Manager menyn och kontroll över enskilda flaggor finns i Edit->Advanced det här användargränssnittet.
Miljövariabler
- APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED: booleansk (standard:- true)- Aktiverar/inaktiverar profileringsfunktionen. Som standard är funktionen aktiverad i agenten (sedan agent 3.4.9). Men även om den här funktionen är aktiverad i agenten samlas inte profiler in om de inte är aktiverade i portalen enligt beskrivningen i Installation. 
Konfigurationsfil
Exempelkonfiguration:
{
  "preview": {
    "profiler": {
      "enabled": true,
      "cpuTriggeredSettings": "profile-without-env-data",
      "memoryTriggeredSettings": "profile-without-env-data",
      "manualTriggeredSettings": "profile-without-env-data",
      "enableRequestTriggering": true,
      "periodicRecordingDurationSeconds": 60
    }
  }
}
              memoryTriggeredSettings Den här konfigurationen används om en minnesprofil begärs.
Det här värdet kan vara något av:
- 
              profile-without-env-data(standardvärde). En profil med vissa känsliga händelser inaktiverade finns i avsnittet Varning för mer information.
- 
              profile. Använder konfigurationenprofile.jfcsom levereras med JFR.
- En sökväg till en anpassad jfc-konfigurationsfil i filsystemet, till exempel /tmp/myconfig.jfc.
              cpuTriggeredSettings Den här konfigurationen används om en cpu-profil begärs.
Det här värdet kan vara något av:
- 
              profile-without-env-data(standardvärde). En profil med vissa känsliga händelser inaktiverade finns i avsnittet Varning för mer information.
- 
              profile. Använder jfc-konfigurationenprofile.jfcsom levereras med JFR.
- En sökväg till en anpassad jfc-konfigurationsfil i filsystemet, till exempel /tmp/myconfig.jfc.
              manualTriggeredSettings Den här konfigurationen används om en manuell profil begärs.
Det här värdet kan vara något av:
- 
              profile-without-env-data(standardvärde). En profil med vissa känsliga händelser inaktiverade finns i avsnittet Varning för mer information.
- 
              profile. Använder jfc-konfigurationenprofile.jfcsom levereras med JFR.
- En sökväg till en anpassad jfc-konfigurationsfil i filsystemet, till exempel /tmp/myconfig.jfc.
              enableRequestTriggering Om JFR-profilering ska utlösas baserat på konfiguration av begäranden.
Det här värdet kan vara något av:
- 
              trueProfilering utlöses om ett begärandetröskelvärde överskrids.
- 
              false(standardvärde). Konfiguration av begäran utlöser inte profilering.
              periodicRecordingDurationSeconds Profilering av inspelningstid i sekunder när en profileringssession startas med knappen Profil nu . Standardvärdet är 120.
Nästa steg
- Mer information om vanliga frågor och svar finns i Vanliga frågor och svar om Java Profiler
 
              
               
              
              