Profilazione delle applicazioni Java
Questa pagina descrive come modificare l'applicazione Java per acquisire i dati di profilazione e inviarli al tuo progetto Google Cloud. Per informazioni generali sulla profilazione, vedi Concetti di profilazione.
Tipi di profilo per Java:
- Tempo di CPU
- Heap (richiede Java 11 o l'ambiente standard di App Engine, disattivato per impostazione predefinita)
- Tempo totale di esecuzione (non disponibile per l'ambiente standard di App Engine Java 8)
Versioni del linguaggio Java supportate:
- JVM basate su HotSpot (inclusi Oracle JDK e alcune build OpenJDK) per Java 8, 11 o versioni successive.
Versioni dell'agente di profilazione supportate:
- È supportata la versione più recente dell'agente. In generale, le release più vecchie di un anno non sono supportate. Ti consigliamo di utilizzare la versione dell'agente rilasciata più di recente.
Sistemi operativi supportati:
- Linux. La profilazione delle applicazioni Java è supportata per i kernel Linux
la cui libreria C standard è implementata con
glibco conmusl. Per informazioni sulla configurazione specifiche per i kernel Linux Alpine, consulta Esecuzione su Linux Alpine.
Ambienti supportati:
- Compute Engine
- Google Kubernetes Engine (GKE)
- Ambiente flessibile di App Engine
- Ambiente standard di App Engine (richiede l'SDK App Engine versione 1.9.64 o successive)
- Managed Service for Apache Spark (per informazioni, vedi Configurazione di Cloud Profiler per i job Spark e Hadoop di Managed Service for Apache Spark).
- Al di fuori di Google Cloud (per informazioni sui requisiti di configurazione aggiuntivi, vedi Profilazione delle applicazioni in esecuzione al di fuori di Google Cloud).
Attivazione dell'API Profiler
Prima di utilizzare l'agente di profilazione, assicurati che l'API Profiler sottostante sia abilitata. Puoi controllare lo stato dell'API e abilitarla, se necessario, utilizzando Google Cloud CLI o la console Google Cloud :
gcloud CLI
Se non hai ancora installato Google Cloud CLI sulla tua workstation, consulta la documentazione di Google Cloud CLI.
Esegui questo comando:
gcloud services enable cloudprofiler.googleapis.com
Per saperne di più, vedi gcloud services.
Console Google Cloud
-
Abilita l'API Cloud Profiler.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli. Se viene visualizzato il messaggio API abilitata, l'API è già abilitata. In caso contrario, fai clic sul pulsante Abilita.
Concedi il ruolo IAM al account di servizio
Se stai eseguendo il deployment dell'applicazione sulle risorse Google Cloud e se utilizzi il account di servizio predefinito e non hai modificato le concessioni di ruolo a questo account di servizio, puoi saltare questa sezione.
Se esegui una delle seguenti operazioni, devi concedere al account di servizio
il ruolo IAM di
Agente Cloud Profiler (roles/cloudprofiler.agent):
- Stai utilizzando il account di servizio predefinito, ma hai modificato le concessioni di ruolo.
- Stai utilizzando un account di servizio creato dall'utente.
- Stai utilizzando Workload Identity, concedi il ruolo Agente Cloud Profiler al account di servizio Kubernetes.
Puoi concedere un ruolo IAM a un account di servizio utilizzando la consoleGoogle Cloud o Google Cloud CLI. Ad esempio, puoi utilizzare il comando
gcloud projects add-iam-policy-binding:
gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
--member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \
--role roles/cloudprofiler.agent
Prima di utilizzare il comando precedente, sostituisci quanto segue:
- GCP_PROJECT_ID: il tuo ID progetto.
- MY_SVC_ACCT_ID: il nome del account di servizio.
Per informazioni dettagliate, vedi Gestire l'accesso a progetti, cartelle e organizzazioni.
Installazione dell'agente Profiler
Compute Engine
Crea una directory di installazione, ad esempio
/opt/cprof, per l'agente Profiler:sudo mkdir -p /opt/cprofScarica l'archivio dell'agente dal repository
storage.googleapis.comed estrailo nella directory di installazione:wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \ | sudo tar xzv -C /opt/cprof
GKE
Modifica Dockerfile per creare una directory di installazione per l'agente Profiler, scarica l'archivio dell'agente, quindi estrailo nella directory di installazione.
Linux (libreria C basata su glibc):
Utilizza il seguente comando di installazione:
RUN mkdir -p /opt/cprof && \
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
| tar xzv -C /opt/cprofLinux Alpine (libreria C basata su musl):
Utilizza il seguente comando di installazione:
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent_alpine.tar.gz \ | tar xzv -C /opt/cprof
Ambiente flessibile
Quando utilizzi l'immagine di base del runtime Java 8 di Google o l'immagine di base del runtime Java 9 / Jetty 9, l'agente Profiler è preinstallato, quindi non devi eseguire ulteriori passaggi per installarlo.
Per tutte le altre immagini di base, devi installare l'agente. Ad esempio, il seguente Dockerfile contiene le istruzioni per utilizzare l'immagine openjdk:11-slim, installare l'agente Profiler e definisce i parametri predefiniti da utilizzare all'avvio dell'applicazione:
FROM openjdk:11-slim
COPY . .
RUN apt-get update \
&& apt-get install wget \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /opt/cprof && \
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
| tar xzv -C /opt/cprof
CMD ["java", "-agentpath:/opt/cprof/profiler_java_agent.so=OPTION1,OPTION2", "-jar", "PATH_TO_YOUR_JAR_FILE"]
Per utilizzare questo Dockerfile con l'ambiente flessibile di App Engine, devi
fare quanto segue:
- Sostituisci
OPTION1eOPTION2con i valori di configurazione dell'agente necessari per la tua applicazione e sostituisciPATH_TO_YOUR_JAR_FILEcon il percorso del file JAR. - Inserisci
Dockerfilenella stessa directory del fileapp.yaml. - Modifica il file
app.yamlper specificare un runtime personalizzato. Per saperne di più, consulta Creazione di runtime personalizzati.
Ambiente standard
Quando utilizzi l'ambiente di runtime Java,
l'agente Profiler è preinstallato, quindi non devi
eseguire ulteriori passaggi per installarlo.
Per Java versione 11 e successive, è preinstallato in /opt/cprof.
Al di fuori di Google Cloud
Crea una directory di installazione, ad esempio
/opt/cprof, per l'agente Profiler:sudo mkdir -p /opt/cprofScarica l'archivio dell'agente dal repository
storage.googleapis.comed estrailo nella directory di installazione:wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \ | sudo tar xzv -C /opt/cprof
Per elencare tutte le versioni dell'agente disponibili per il download, esegui questo comando:
gcloud storage ls gs://cloud-profiler/java/cloud-profiler-*
La risposta del comando è simile alla seguente:
gs://cloud-profiler/java/cloud-profiler-java-agent_20191014_RC00.tar.gz gs://cloud-profiler/java/cloud-profiler-java-agent_20191021_RC00.tar.gz gs://cloud-profiler/java/cloud-profiler-java-agent_20191028_RC00.tar.gz
Per scaricare una versione specifica dell'agente, trasmetti il relativo URL al comando di download. Ad esempio, per scaricare l'agente creato il 28 ottobre 2019, utilizzeresti la seguente istruzione:
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/cloud-profiler-java-agent_20191028_RC00.tar.gz \
| sudo tar xzv -C /opt/cprofLa versione dell'agente viene registrata durante l'inizializzazione.
Caricamento dell'agente Profiler
Per profilare l'applicazione, avvia Java come faresti normalmente per eseguire il programma, ma specifica le opzioni di configurazione dell'agente. Specifica il percorso della libreria dell'agente e puoi passare le opzioni alla libreria.
Per l'ambiente standard di App Engine, l'agente viene caricato e configurato automaticamente. Vai direttamente alla sezione Avvio del programma per informazioni dettagliate sulla configurazione e l'avvio del programma.
Configurazione dell'agente
Per configurare l'agente di profilazione, includi il flag -agentpath all'avvio
dell'applicazione:
-agentpath:INSTALL_DIR/profiler_java_agent.so=OPTION1,OPTION2,OPTION3
In questa espressione, INSTALL_DIR è il percorso dell'agente di profilazione, mentre
OPTION1, OPTION2 e OPTION3 sono opzioni di configurazione dell'agente. Ad esempio, se sostituisci OPTION1 con -cprof_service=myapp nell'espressione precedente, imposti il nome del servizio su myapp. Non esistono limitazioni
al numero di opzioni o al loro ordine. Le opzioni di configurazione supportate
sono elencate nella tabella seguente:
| Opzione agente | Descrizione |
|---|---|
-cprof_service
|
Se la tua applicazione non è in esecuzione su App Engine, devi
utilizzare questa opzione di configurazione per impostare il nome del servizio.
Per le limitazioni relative ai nomi dei servizi, consulta
Argomenti del nome e della versione del servizio.
|