Delen via


Java Profiler voor Azure Monitor Application Insights

Notitie

De Java Profiler-functie is in preview, vanaf 3.4.0.

Application Insights Java Profiler biedt een systeem voor:

  • JDK Flight Recorder-profielen (JFR) op aanvraag genereren vanaf de Java Virtual Machine (JVM).
  • JFR-profielen automatisch genereren wanneer aan bepaalde triggervoorwaarden wordt voldaan vanuit JVM, zoals CPU of geheugen dat een geconfigureerde drempelwaarde overschrijdt.

Overzicht

De Java Profiler van Application Insights maakt gebruik van de JFR profiler die door de JVM wordt geleverd om profileringsgegevens vast te leggen, zodat gebruikers de JFR-opnamen op een later tijdstip kunnen downloaden en analyseren om de oorzaak van prestatieproblemen te identificeren.

Deze gegevens worden op aanvraag verzameld wanneer aan triggervoorwaarden wordt voldaan. De beschikbare triggers zijn drempelwaarden voor CPU-gebruik, geheugenverbruik en aanvraag (triggers voor serviceovereenkomsten). Aanvraagtriggers bewaken Spans die zijn gegenereerd door OpenTelemetry en stellen de gebruiker in staat om SLA-vereisten (Service Level Agreement) te configureren gedurende de duur van deze periodes.

Wanneer een drempelwaarde wordt bereikt, wordt een profiel van het geconfigureerde type en de duur verzameld en geüpload. Dit profiel is vervolgens zichtbaar in het prestatievenster van de gekoppelde Gebruikersinterface van de Application Insights-portal.

Waarschuwing

De JFR profiler voert standaard het profiel 'profile-without-env-data' uit. Een JFR-bestand is een reeks gebeurtenissen die door de JVM worden verzonden. De configuratie 'profile-without-env-data' is vergelijkbaar met de profielconfiguratie die wordt geleverd met de JVM, maar heeft een aantal gebeurtenissen uitgeschakeld die gevoelige implementatiegegevens zoals omgevingsvariabelen, argumenten hebben die zijn opgegeven voor de JVM en processen die op het systeem worden uitgevoerd.

De vlaggen die niet meer beschikbaar zijn, zijn:

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

Controleer echter alle ingeschakelde vlaggen om ervoor te zorgen dat profielen geen gevoelige gegevens bevatten.

Zie Profielinhoud configureren voor het instellen van een aangepaste profilerconfiguratie.

Vereisten

  • JVM met JFR-mogelijkheid (Java Flight Recorder)
    • Java 8 update 262+
    • Java 11+

Waarschuwing

OpenJ9 JVM wordt niet ondersteund

Gebruik

Triggers

Zie het profiler-overzicht voor meer gedetailleerde beschrijving van de verschillende beschikbare triggers.

De Java-agent van ApplicationInsights bewaakt de CPU, het geheugen en de aanvraagduur, zoals een zakelijke transactie. Als er een geconfigureerde drempelwaarde wordt overschreden, wordt een profiel geactiveerd.

Profiel nu

De knop Profiel nu bevindt zich in de gebruikersinterface van profiler (zie profiler-instellingen). Als u deze knop selecteert, wordt onmiddellijk een profiel aangevraagd in alle agents die zijn gekoppeld aan het Application Insights-exemplaar. De standaardprofileringsduur is twee minuten. U kunt dit wijzigen door het te periodicRecordingDurationSeconds overschrijven (zie configuratiebestand).

Waarschuwing

Als u profiel aanroept, wordt de profilerfunctie ingeschakeld. Application Insights past standaard-CPU- en geheugen-SLA-triggers toe. Wanneer uw toepassing deze SLA's schendt, verzamelt Application Insights Java-profielen. Als u profilering later wilt uitschakelen, kunt u dit doen in het triggermenu dat wordt weergegeven in De installatie.

CPU

CPU-drempelwaarde is een percentage van het gebruik van alle beschikbare kernen op het systeem.

Als bijvoorbeeld één kern van een acht kernmachine verzadigd was, wordt het CPU-percentage beschouwd als 12,5%.

Geheugen

Geheugenpercentage is de huidige bezetting van tenured geheugen (OldGen) ten opzichte van de maximale grootte van de regio.

De bezetting wordt geëvalueerd nadat een ingetrokken verzameling is uitgevoerd. De maximale grootte van de vastgehouden regio is de grootte die het zou zijn als de JVM-heap (Java Virtual Machine) is gegroeid tot de maximale grootte.

Neem bijvoorbeeld het volgende scenario:

  • De Java-heap kan groeien tot maximaal 1024 mb.
  • De Tenured Generation kan groeien tot 90% van de heap.
  • De maximale grootte van vastgehouden zou 922 mb zijn.
  • Uw drempelwaarde is ingesteld via de gebruikersinterface op 75%, dus uw drempelwaarde is 75% van 922 mb, 691 mb.

In dit scenario treedt een profiel op in de volgende omstandigheden:

  • Volledige garbagecollection wordt uitgevoerd
  • De bezetting van de tenured regio's is hoger dan 691 mb na het verzamelen

Aanvraag

SLA-triggers zijn gebaseerd op OpenTelemetry en starten een profiel als aan bepaalde criteria wordt voldaan.

Elke afzonderlijke triggerconfiguratie wordt als volgt gevormd:

  • Name - Een unieke id voor de trigger.
  • Filter - Filtert de aanvragen van belang voor de trigger.
  • Aggregation - Berekent de verhouding van aanvragen die een bepaalde drempelwaarde hebben overschreden.
    • Threshold - Een minimumwaarde (in milliseconden) waarop een aanvraagschending wordt vastgesteld.
    • Minimum samples - Het minimum aantal monsters dat moet worden verzameld voor de aggregatie om gegevens te produceren, is deze instelling om te voorkomen dat kleine steekproefgrootten worden geactiveerd.
    • Window - Tijdvenster (in milliseconden).
  • Threshold - De drempelwaarde (percentage) die is toegepast op de aggregatie-uitvoer. Als deze waarde wordt overschreden, wordt er een profiel gestart.

In het volgende scenario wordt bijvoorbeeld een profiel geactiveerd als: meer dan 75% van de aanvragen naar een specifiek eindpunt (/gebruikers/.*) langer duurt dan 30 ms binnen een venster van 60 seconden, wanneer ten minste 100 steekproeven zijn verzameld.

Screenshot of request trigger sample

Installatie

De volgende stappen helpen u bij het inschakelen van het profileringsonderdeel op de agent en het configureren van resourcelimieten die een profiel activeren als dit wordt geschonden.

  1. Configureer de resourcedrempels die ervoor zorgen dat een profiel wordt verzameld:

    1. Blader naar de sectie Performance -> Profiler van het Application Insights-exemplaar. Screenshot of the link to open performance pane.Screenshot of the Profiler button from the Performance pane.

    2. Selecteer Triggers

    3. Configureer de vereiste CPU-, geheugen- of aanvraagtriggers (indien ingeschakeld) en selecteer Toepassen. Screenshot of trigger settings

Waarschuwing

De Java Profiler biedt geen ondersteuning voor de trigger 'Sampling'. Het configureren hiervan heeft geen effect.

Nadat deze stappen zijn voltooid, controleert de agent het resourcegebruik van uw proces en activeert een profiel wanneer de drempelwaarde wordt overschreden. Wanneer een profiel wordt geactiveerd en voltooid, is het zichtbaar vanuit het Application Insights-exemplaar in de sectie Performance -> Profiler. Vanaf dat scherm kan het profiel worden gedownload, zodra het JFR-opnamebestand is gedownload en geanalyseerd in een hulpprogramma van uw keuze, bijvoorbeeld Oracle JDK Mission Control (JMC).

Screenshot of profiler page features and settings.

Configuratie

Configuratie van de profiler-triggerinstellingen, zoals drempelwaarden en profileringsperioden, worden ingesteld in de ApplicationInsights-gebruikersinterface onder de gebruikersinterface Prestaties, Profiler, Triggers UI zoals beschreven in Installatie.

Daarnaast kunnen veel parameters worden geconfigureerd met behulp van omgevingsvariabelen en het applicationinsights.json configuratiebestand.

Profielinhoud configureren

Als u een aangepaste profielconfiguratie wilt opgeven, wijzigt u het memoryTriggeredSettingspad cpuTriggeredSettings naar een .jfc bestand met de vereiste configuratie.

Profielen kunnen worden gegenereerd/bewerkt in de JDK Mission Control -gebruikersinterface (JMC) onder het Window->Flight Recording Template Manager menu en controle over afzonderlijke vlaggen vindt u in Edit->Advanced deze gebruikersinterface.

Omgevingsvariabelen

  • APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED: Booleaanse waarde (standaard: true) Schakelt de profileringsfunctie in of uit. De functie is standaard ingeschakeld in de agent (sinds agent 3.4.9). Hoewel deze functie echter is ingeschakeld binnen de agent, worden profielen niet verzameld, tenzij ze zijn ingeschakeld in de portal, zoals beschreven in Installatie.

Configuratiebestand

Voorbeeldconfiguratie:

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

memoryTriggeredSettings Deze configuratie wordt gebruikt als er een geheugenprofiel wordt aangevraagd. Deze waarde kan een van de volgende zijn:

  • profile-without-env-data (standaardwaarde). Een profiel met bepaalde gevoelige gebeurtenissen uitgeschakeld, zie de sectie Waarschuwing voor meer informatie.
  • profile. Maakt gebruik van de profile.jfc configuratie die wordt geleverd met JFR.
  • Een pad naar een aangepast jfc-configuratiebestand op het bestandssysteem, /tmp/myconfig.jfcbijvoorbeeld.

cpuTriggeredSettings Deze configuratie wordt gebruikt als een CPU-profiel wordt aangevraagd. Deze waarde kan een van de volgende zijn:

  • profile-without-env-data (standaardwaarde). Een profiel met bepaalde gevoelige gebeurtenissen uitgeschakeld, zie de sectie Waarschuwing voor meer informatie.
  • profile. Maakt gebruik van de profile.jfc jfc-configuratie die wordt geleverd met JFR.
  • Een pad naar een aangepast jfc-configuratiebestand op het bestandssysteem, /tmp/myconfig.jfcbijvoorbeeld.

manualTriggeredSettings Deze configuratie wordt gebruikt als een handmatig profiel wordt aangevraagd. Deze waarde kan een van de volgende zijn:

  • profile-without-env-data (standaardwaarde). Een profiel met bepaalde gevoelige gebeurtenissen uitgeschakeld, zie de sectie Waarschuwing voor meer informatie.
  • profile. Maakt gebruik van de profile.jfc jfc-configuratie die wordt geleverd met JFR.
  • Een pad naar een aangepast jfc-configuratiebestand op het bestandssysteem, /tmp/myconfig.jfcbijvoorbeeld.

enableRequestTriggering Of JFR-profilering moet worden geactiveerd op basis van de aanvraagconfiguratie. Deze waarde kan een van de volgende zijn:

  • true Profilering wordt geactiveerd als een drempelwaarde voor een aanvraagtrigger wordt overschreden.
  • false (standaardwaarde). De aanvraagconfiguratie activeert geen profilering.

periodicRecordingDurationSeconds Opnameduur van profilering in seconden wanneer een profileringssessie wordt gestart met behulp van de knop Profiel nu . De standaardwaarde is 120.

Veelgestelde vragen

Wat is Azure Monitor Application Insights Java-profilering?

Azure Monitor Application Insights Java Profiler maakt gebruik van Java Flight Recorder (JFR) om uw toepassing te profileeren met behulp van een aangepaste configuratie.

Wat is Java Flight Recorder?

Java Flight Recorder (JFR) is een hulpprogramma voor het verzamelen van profileringsgegevens van een actieve Java-toepassing. JFR is geïntegreerd in de Java Virtual Machine (JVM) en wordt gebruikt voor het oplossen van prestatieproblemen. Meer informatie over Java SE JFR Runtime.

Wat zijn de gevolgen voor de prijs en/of licentiekosten voor het inschakelen van App Insights Java-profilering?

Java-profilering is een gratis functie met Application Insights. Prijzen voor Azure Monitor Application Insights zijn gebaseerd op opnamekosten.

Welke Java-profileringsgegevens worden verzameld?

Profileringsgegevens die door de JFR worden verzameld, omvatten: methode- en uitvoeringsprofileringsgegevens, garbagecollection-gegevens en vergrendelingsprofielen.

Hoe kan ik Java-profilering van App Insights gebruiken en de gegevens visualiseren?

JFR-opname kan worden bekeken en geanalyseerd met uw favoriete hulpprogramma, bijvoorbeeld Java Mission Control (JMC).

Worden prestatiediagnose en aanbevelingen opgelost die worden geleverd met Java-profilering voor App Insights?

'Prestatiediagnose en aanbevelingen' is een nieuwe functie die beschikbaar is zodra Application Insights Java Diagnostics. U kunt zich registreren om een voorbeeld van deze functie te bekijken. JFR-opname kan worden bekeken met Java Mission Control (JMC).

Wat is het verschil tussen on-demand en automatische Java-profilering in App Insights?

On-demand is door de gebruiker geactiveerde profilering in realtime, terwijl automatische profilering is met vooraf geconfigureerde triggers.

Gebruik Nu profileren voor de optie profilering op aanvraag. Profile Now profile Now profileert onmiddellijk alle agents die zijn gekoppeld aan het Application Insights-exemplaar.

Automatische profilering wordt een inbreuk in een resourcedrempel geactiveerd.

Welke Java-profileringstriggers kan ik configureren?

Application Insights Java Agent ondersteunt momenteel bewaking van CPU- en geheugenverbruik. De CPU-drempelwaarde wordt geconfigureerd als een percentage van alle beschikbare kernen op de computer. Geheugen is de huidige bezetting van tenured memory region (OldGen) ten opzichte van de maximale grootte van de regio.

Wat zijn de vereiste vereisten voor het inschakelen van Java-profilering?

Bekijk de vereisten bovenaan dit artikel.

Kan ik Java-profilering gebruiken voor microservicestoepassing?

Ja, u kunt een JVM die microservices uitvoert profilen met behulp van de JFR.