Misurare le prestazioni dell'app
Questo documento mostra come configurare e utilizzare Cloud Profiler. Puoi scaricare un programma Go di esempio, eseguirlo con la profilazione abilitata, quindi utilizzare l'interfaccia di Profiler per esplorare i dati acquisiti.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Nel pannello di navigazione della console Google Cloud, seleziona API e servizi, fai clic su Abilita API e servizi e abilita l'API Cloud Profiler:
Se viene visualizzato API abilitata, significa che l'API è già abilitata. In caso contrario, fai clic sul pulsante Attiva.
- Per aprire Cloud Shell, nella barra degli strumenti della console Google Cloud, fai clic su Attiva Cloud Shell:
Dopo qualche istante, all'interno della console Google Cloud si apre una sessione di Cloud Shell:
Ottieni un programma da profilare
Il programma di esempio, main.go
, si trova nel repository golang-samples
su GitHub. Per recuperarlo, recupera il pacchetto di esempi Go:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Il recupero del pacco richiede alcuni istanti.
Profila il codice
Vai alla directory del codice campione per Profiler nel pacchetto recuperato:
cd golang-samples/profiler/profiler_quickstart
Il programma main.go
crea un carico di lavoro ad alta intensità di CPU per fornire dati al profiler. Avvia il programma e lascialo in esecuzione:
go run main.go
Questo programma è progettato per caricare la CPU durante l'esecuzione. È configurato per utilizzare Profiler, che raccoglie i dati di profilazione dal programma durante la sua esecuzione e li salva periodicamente.
Qualche secondo dopo l'avvio del programma, viene visualizzato il messaggio profiler has started
. Tra circa un minuto vengono visualizzati altri due messaggi:
successfully created profile CPU
start uploading profile
Questi messaggi indicano che un profilo è stato creato e caricato nel progetto Cloud Storage. Il programma continua a emettere gli ultimi due messaggi, circa una volta al minuto, fintanto che è in esecuzione.
Se dopo aver avviato il servizio ricevi un messaggio di errore di autorizzazione negata, vedi Errori nella configurazione del progetto Google Cloud.
Interfaccia Profiler
Qualche istante dopo l'avvio dell'applicazione, Profiler visualizza i dati iniziali del profilo. L'interfaccia offre una serie di controlli e un grafico a fiamme per esplorare i dati di profilazione:
Oltre ai controlli relativi all'ora, sono disponibili opzioni che ti consentono di scegliere il set di dati del profilo da utilizzare. Quando esegui la profilazione di più applicazioni, utilizzi Servizio per selezionare l'origine dei dati profilati. Tipo di profilo consente di scegliere il tipo di dati del profilo da visualizzare. Nome zona e Versione consentono di limitare la visualizzazione ai dati delle zone di Compute Engine o delle versioni dell'applicazione. Ponderazione consente di selezionare i profili acquisiti durante i picchi di consumo di risorse.
Per perfezionare il modo in cui il grafico a fiamme mostra i profili che hai selezionato da analizzare,
aggiungi dei filtri. Nello screenshot precedente, la barra dei filtri filter_list mostra un filtro. Questa opzione di filtro è Metric
e il valore del filtro è CPU time
.
Esplorare i dati
Il grafico a fiamme mostra gli stack di chiamate del programma. Il grafico a fiamme rappresenta ogni funzione con un frame. La larghezza del frame rappresenta la proporzione del consumo di risorse da parte della funzione. Il frame superiore rappresenta l'intero programma. Questo frame mostra sempre il 100% del consumo di risorse. Questo frame elenca anche il numero di profili calcolati in media nel grafico.
Il programma di esempio non ha un insieme complicato di stack di chiamate; nello screenshot precedente, vedi 5 frame:
- Il frame grigio rappresenta l'intero file eseguibile, che rappresenta il 100% delle risorse utilizzate.
- Il frame
main
verde è Goruntime.main
. - Il frame arancione
main
è la routinemain
del programma di esempio. - Il frame arancione
busyloop
è una routine chiamata dalmain
del campione. - Il frame arancione
main.load
è una routine chiamata dalmain
del campione.
Il selettore di filtri ti consente, ad esempio, di filtrare le funzioni che corrispondono a un nome. Ad esempio, se esiste una libreria standard di funzioni
di utilità, puoi rimuoverle dal grafico. Puoi anche rimuovere gli stack di chiamate
provenienti da un determinato metodo o semplificare il grafico in altri modi.
L'applicazione main.go
è semplice, quindi non c'è molto da filtrare.
Anche per una semplice applicazione, i filtri consentono di nascondere frame non interessanti per visualizzare più chiaramente quelli interessanti. Ad esempio, nello screenshot di profilazione del codice campione, il frame grigio è leggermente più grande del primo frame main
sottostante. Perché? C'è qualcos'altro
in corso che non è immediatamente evidente perché lo stack di chiamate main
consuma una percentuale così schiacciante delle risorse?
Per visualizzare cosa accade al di fuori della routine main
dell'applicazione,
aggiungi un filtro che nasconda lo stack di chiamate della routine main
.
Solo lo 0,227% del consumo di risorse si verifica al di fuori di main
:
Per ulteriori informazioni sui filtri e su altri modi per esplorare i dati di profilazione, consulta Selezionare i profili da analizzare.
Passaggi successivi
Per informazioni generali sulla profilazione, consulta i seguenti documenti:
- Panoramica di Cloud Profiler
- Concetti di profilazione
- Leggi le nostre risorse su DevOps ed esplora il programma di ricerca di DORA.
- Profilazione delle applicazioni Go
- Profilazione delle applicazioni Java
- Profilazione delle applicazioni Node.js
- Profilazione delle applicazioni Python
- Profilazione delle applicazioni in esecuzione all'esterno di Google Cloud