Panoramica di Cloud Profiler
È notoriamente difficile comprendere le prestazioni dei sistemi di produzione. Il tentativo di misurare le prestazioni negli ambienti di test di solito non riesce a replicare le pressioni su un sistema di produzione. A volte è possibile eseguire il microbenchmarking di parti della tua applicazione, ma in genere non riesce a replicare il carico di lavoro e il comportamento di un sistema di produzione.
La profilazione continua dei sistemi di produzione è un modo efficace per scoprire dove risorse come cicli della CPU e memoria vengono utilizzate come servizio nel suo ambiente di lavoro. Tuttavia, la profilazione aggiunge un ulteriore carico al sistema di produzione: per essere un modo accettabile per rilevare i pattern di consumo delle risorse, il carico aggiuntivo di profilazione deve essere ridotto.
Cloud Profiler è un profilatore statistico e con un overhead ridotto che raccoglie continuamente le informazioni sull'utilizzo della CPU e sull'allocazione della memoria delle tue applicazioni di produzione. Attribuisce queste informazioni al codice sorgente che lo ha generato, aiutandoti a identificare le parti della tua applicazione che stanno consumando la maggior parte delle risorse e ad illuminare le caratteristiche di prestazioni delle tue applicazioni.
Tipi di profilazione disponibili
Cloud Profiler supporta diversi tipi di profilazione in base al linguaggio in cui è scritto un programma. La seguente tabella riassume i tipi di profili supportati per lingua:
Tipo di profilo | Go | Java | Node.js | Python |
---|---|---|---|---|
Tempo CPU | A | Y | A | |
Heap | A | Y | A | |
Heap allocato | A | |||
Contesa | A | |||
Thread | A | |||
Tempo totale di esecuzione | A | Y | A |
Per informazioni complete sui requisiti linguistici e le eventuali limitazioni, consulta la pagina di istruzioni della lingua. Per ulteriori informazioni su questi tipi di profili, consulta la pagina Concetti di profilazione.
Configurazioni supportate
Quando strumenti la tua applicazione per acquisire i dati del profilo, includi un agente di profilazione specifico per lingua. La tabella riportata di seguito riassume gli ambienti supportati:
Ambienti | Go | Java | Node.js | Python |
---|---|---|---|---|
Compute Engine | A | Y | Y | A |
Google Kubernetes Engine | A | Y | Y | A |
Ambiente flessibile di App Engine | A | Y | Y | A |
Ambiente standard di App Engine | A | Y | Y | A |
Dataproc | A | |||
Dataflow | A | A | ||
Fuori da Google Cloud | A | Y | Y | A |
La seguente tabella riassume i sistemi operativi supportati:
Sistemi operativi | Go | Java | Node.js | Python |
---|---|---|---|---|
Implementazioneglibc di Linux della libreria C standard |
A | Y | Y | A |
Implementazionemusl di Linux della libreria C standard |
A | Sì (alpha) | A | Sì (alpha) |
Impatto sulle prestazioni
Cloud Profiler crea un singolo profilo raccogliendo i dati di profilazione, di solito per 10 secondi, ogni minuto per una singola istanza del servizio configurato in una singola zona di Compute Engine. Ad esempio, se il servizio GKE esegue 10 repliche di un pod, in un periodo di 10 minuti vengono creati circa 10 profili e ogni pod viene profilato approssimativamente una volta. Il periodo di profilazione è casuale, quindi c'è una variazione. Per ulteriori informazioni, consulta Raccolta di profili.
L'overhead della profilazione della CPU e dell'allocazione heap al momento della raccolta dei dati è inferiore al 5%. Amortizzato nel tempo di esecuzione e in più repliche di un servizio, l'overhead è in genere inferiore allo 0,5%, il che lo rende un'opzione conveniente per la profilazione sempre attiva nei sistemi di produzione.
Componenti
Cloud Profiler è costituito dall'agente di profilazione, che raccoglie i dati, e da un'interfaccia della console su Google Cloud, che consente di visualizzare e analizzare i dati raccolti dall'agente.
Agente di profilazione
Installa l'agente sulle macchine virtuali in cui viene eseguita la tua applicazione. In genere l'agente è una libreria che puoi collegare all'applicazione quando la esegui. L'agente raccoglie i dati di profilazione durante l'esecuzione dell'app.
Per informazioni sull'esecuzione dell'agente Cloud Profiler, consulta:- Profilazione di applicazioni Go
- Profilazione di applicazioni Java
- Profilazione di applicazioni Node.js
- Profilazione di applicazioni Python
- Profilazione di applicazioni in esecuzione all'esterno di Google Cloud
Interfaccia Profiler
Dopo che l'agente ha raccolto alcuni dati di profilazione, puoi utilizzare l'interfaccia di Profiler per visualizzare la correlazione tra le statistiche relative all'utilizzo di CPU e memoria con le aree dell'applicazione.
I dati del profilo vengono conservati per 30 giorni, in modo che tu possa analizzarli per i periodi fino agli ultimi 30 giorni. I profili possono essere scaricati per archiviarli a lungo termine.
Quote e limiti
Per informazioni sulla visualizzazione e sulla gestione delle quote di Profiler, consulta Quote e limiti.
Protezione dei dati
Cloud Profiler è un servizio di Controlli di servizio VPC supportato. Per ulteriori informazioni, consulta la documentazione di Controlli di servizio VPC.