Kommentar
Å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.
Använd Azure prestandadiagnostikverktyget för Java i Azure SRE-agenten för att undersöka JVM-prestandaproblem i Azure Kubernetes Service (AKS). Verktyget samlar in profileringsdata från en arbetsbelastning som körs Java och returnerar resultat som hjälper dig att isolera flaskhalsar utan att ta programmet offline.
Prerequisites
- Ett Java program som körs i ett AKS-kluster
- En Azure SRE Agent-miljö som kan komma åt målklustret
- Behörigheter för att inspektera arbetsbelastningen och köra diagnostik via Azure SRE-agent
-
kubectlinstallerat och konfigurerat om du vill lägga till kommentaren från kommandoraden
Diagnostik som stöds
Azure prestandadiagnostikverktyget för Java hjälper dig att identifiera problem som:
- Ineffektivitet för skräpinsamling och långa pauser
- CPU-överanvändning eller underanvändning
- I/O-tungt beteende som påverkar svarstiden
- Trådkonflikter och synkroniseringsflaskhalsar
Aktivera Java diagnostik
Om du vill aktivera diagnostik kan du märka arbetsbelastningen som ett Java program genom att lägga till languageStack: java-anteckningen.
Lägg till kommentaren i poddspecifikationen
Lägg till annoteringen i pod-metadata i din arbetsbelastningsdefinition:
apiVersion: v1
kind: Pod
metadata:
name: your-java-app
annotations:
languageStack: java
spec:
containers:
- name: app
image: your-java-app:latest
Lägg till kommentaren med kubectl
Om podden redan körs lägger du till kommentaren från kommandoraden:
kubectl annotate pod your-java-app languageStack=java
När du lägger till den här kommentaren bekräftar du att:
- Podden kör ett Java program.
- Azure SRE-agenten kan köra Java diagnostik mot podden.
Note
Diagnostikprocessen är utformad för att minimera störningar, men Java Flight Recorder lägger fortfarande till en del omkostnader. Verifiera upplevelsen i en icke-produktionsmiljö innan du använder den i produktion.
Vad händer under en diagnostikkörning
När Azure SRE-agent startar en Java diagnostikkörning:
- Skapar en tillfällig container i målpodden.
- Kopplar diagnostikcontainern till Java-containern.
- Samlar in telemetri med hjälp av Java Flight Recorder (JFR).
- Analyserar insamlade data.
- Tar bort diagnostikcontainern när körningen är klar.
Den här processen håller programmet online medan Azure SRE-agenten samlar in de data som behövs.
Om tillfälliga containrar
Kubernetes behåller en logg över avslutade tillfälliga containrar. Om du kör kubectl describe pod fortsätter du att se slutförda diagnostikcontainrar när körningen är klar. För att minska bruset begränsar Azure SRE Agent diagnostiken till fem tillfälliga containrar per podd.
Begära Java diagnostik
Du kan begära diagnostik manuellt eller Azure SRE-agenten kan utlösa dem när det upptäcker ett troligt prestandaproblem.
Köra en manuell diagnostikbegäran
I Azure SRE-agent öppnar du chattmiljön och anger arbetsbelastningsinformationen för den Java tjänst som du vill inspektera:
Analyze the performance of:
pod: my-petclinic-app
container: spring-petclinic-rest
namespace: production
aks instance: my-aks-cluster
Inkludera poddnamnet, containernamnet, namnområdet och AKS-klusternamnet så att Azure SRE-agent kan rikta in sig på rätt arbetsbelastning.
Skapa en anpassad underagent för Java diagnostik
Om ditt team vill ha ett dedikerat diagnostikarbetsflöde skapar du en anpassad underagent som dirigerar begäranden till Java diagnostikverktyget.
Konfigurera underagenten
- I Azure SRE-agent öppnar du Sub-Agent Builder.
- Välj Skapa ny underagent.
- Lägg till konfigurationen för de verktyg och det överlämningsbeteende som du vill ha.
Exempelkonfiguration:
api_version: azuresre.ai/v1
kind: AgentConfiguration
spec:
name: AKSDiagnosticAgent
system_prompt: >-
Take the details of a diagnostic analysis to be performed on an AKS container
and hand off to the appropriate diagnostic tool. If you need to find the resource
to diagnose, use the SearchResourceByName and ListResourcesByType tools.
tools:
- GetCPUAnalysis
- GetMemoryAnalysis
- SearchResourceByName
- ListResourcesByType
- AnalyzeJavaAppInAKSContainer
handoff_description: >-
Use this agent when the user requests an AKS diagnostic analysis or when the
investigation requires a Java diagnostics run.
agent_type: Autonomous
Använda underagenten
När du har skapat underagenten kan du dirigera en begäran till den från chatten:
/agent AKSDiagnosticAgent I am having a performance issue in:
pod: illuminate-test-petclinic
container: spring-petclinic-rest
namespace: illuminate-test
aks instance: jeg-aks
Underagenten startar arbetsflödet för Java diagnostik och returnerar resultat med rekommenderade nästa steg.
Delegera diagnostik från aviseringar
Du kan också dirigera aviseringsdrivna undersökningar till underagenten så att Azure SRE-agenten kan starta en Java diagnostikkörning som en del av ett automatiserat svarsflöde.
Tolka diagnostikresultat
När analysen är klar returnerar Azure SRE-agenten resultat som:
- Grundorsaksidentifiering för huvudflaskhalsen
- Diagnostiska insikter som GC-paustider eller trådväntetider
- Rekommendationer för reparation
Använd resultatet för att:
- Justera JVM-argument eller heapstorlek
- Optimera sökvägar för programkod
- Skala AKS-resurser
- Förbättra övervakning och aviseringar