Questa pagina descrive come utilizzare le metriche e i grafici sull'utilizzo della CPU, insieme ad altri strumenti di introspezione, per esaminare l'utilizzo elevato della CPU nel database.
Identificare se un'attività di sistema o utente causa un utilizzo elevato della CPU
La console fornisce diversi strumenti di monitoraggio per Spanner, che ti consentono di visualizzare lo stato delle metriche più essenziali per la tua istanza. Uno di questi è un grafico denominato Utilizzo CPU - Totale. Questo grafico mostra l'utilizzo totale della CPU, in percentuale delle risorse della CPU dell'istanza, suddiviso per priorità dell'attività e tipo di operazione. Esistono due tipi di attività: attività utente, come letture e scritture, e attività di sistema, che riguardano le attività in background automatiche come la compattazione e il backfill dell'indice.
La Figura 1 mostra un esempio del grafico Utilizzo CPU - Totale.
Figura 1. Grafico Utilizzo della CPU - totale nella dashboard di monitoraggio nella console Google Cloud .
Ora immagina di ricevere un avviso da Cloud Monitoring che ti informa che l'utilizzo della CPU è aumentato notevolmente. Apri la dashboard Monitoraggio per la tua istanza nella console Google Cloud ed esamina il grafico Utilizzo CPU - Totale nella console Cloud. Come mostrato nella Figura 1, puoi vedere l'aumento dell'utilizzo della CPU dovuto alle attività utente ad alta priorità. Il prossimo passaggio consiste nell'individuare l'operazione utente con priorità elevata che causa questo aumento dell'utilizzo della CPU.
Puoi visualizzare questa e altre metriche in una serie temporale utilizzando le dashboard Approfondimenti sulle query. Queste dashboard predefinite ti consentono di visualizzare i picchi di utilizzo della CPU e identificare le query inefficienti.
Identifica quale operazione dell'utente causa il picco di utilizzo della CPU
Il grafico Utilizzo della CPU - Totale nella Figura 1 mostra che le attività utente ad alta priorità sono la causa di un utilizzo più elevato della CPU.
Successivamente, esaminerai il grafico Utilizzo della CPU per tipo di operazione nella console Cloud. Questo grafico mostra l'utilizzo della CPU suddiviso per operazioni avviate dall'utente con priorità elevata, media e bassa.
Che cos'è un'operazione avviata dall'utente?
Un'operazione avviata dall'utente è un'operazione avviata tramite una richiesta dell'API. Spanner raggruppa queste richieste in tipi o categorie di operazioni e puoi visualizzare ogni tipo di operazione come una riga nel grafico Utilizzo della CPU per tipo di operazione. La tabella seguente descrive i metodi API inclusi in ogni tipo di operazione.
Operazione | Metodi API | Descrizione |
---|---|---|
read_readonly | Leggi StreamingRead |
Sono incluse le letture che recuperano le righe dal database utilizzando ricerche e scansioni delle chiavi. |
read_readwrite | Leggi StreamingRead |
Sono incluse le letture all'interno delle transazioni di lettura/scrittura. |
read_withpartitiontoken | Leggi StreamingRead |
Sono incluse le operazioni di lettura eseguite utilizzando un insieme di token di partizione. |
executesql_select_readonly | ExecuteSql ExecuteStreamingSql |
Sono incluse le query di esecuzione dell'istruzione SQL Select e di modifica dello stream. |
executesql_select_readwrite | ExecuteSql ExecuteStreamingSql |
Include l'esecuzione dell'istruzione SELECT all'interno delle transazioni di lettura/scrittura. |
executesql_select_withpartitiontoken | ExecuteSql ExecuteStreamingSql |
Include l'istruzione di esecuzione di Select eseguita utilizzando un insieme di token di partizione. |
executesql_dml_readwrite | ExecuteSql ExecuteStreamingSql ExecuteBatchDml |
Include l'istruzione SQL di esecuzione DML. |
executesql_dml_partitioned | ExecuteSql ExecuteStreamingSql ExecuteBatchDml |
Include l'istruzione SQL ed esegui DML partizionato. |
beginorcommit | BeginTransaction Commit Rollback |
Sono incluse le transazioni begin, commit e rollback. |
misc | PartitionQuery PartitionRead GetSession CreateSession |
Sono incluse PartitionQuery, PartitionRead, Create Database, Create Instance, operazioni relative alla sessione, operazioni di pubblicazione interne con tempistiche critiche e così via. |
Ecco un esempio di grafico della metrica Utilizzo della CPU per tipo di operazione.
Figura 2. Grafico Utilizzo della CPU per tipo di operazione nella console Google Cloud .
Puoi limitare la visualizzazione a una priorità specifica utilizzando il menu Priorità nella parte superiore del grafico. Grafica ogni tipo o categoria di operazione su un grafico a linee. Le categorie elencate sotto il grafico identificano ciascun grafico. Puoi nascondere e mostrare ciascun grafico selezionando o deselezionando il relativo filtro per categoria.
In alternativa, puoi anche creare questo grafico nell'esploratore delle metriche come descritto di seguito:
Creare un grafico per l'utilizzo della CPU per tipo di operazione in Metrics Explorer
- Nella console Google Cloud , seleziona Monitoraggio o utilizza il pulsante seguente:
- Seleziona Metrics Explorer nel riquadro di navigazione.
-
Nel campo Find resource type and metric (Trova tipo di risorsa e metrica), inserisci il valore
spanner.googleapis.com/instance/cpu/utilization_by_operation_type
, quindi seleziona la riga visualizzata sotto la casella. -
Nel campo Filtro, inserisci il valore
instance_id
, poi inserisci l'ID istanza che vuoi esaminare e fai clic su >Applica. -
Nel campo Raggruppa per, seleziona
category
dall'elenco a discesa. Il grafico mostra l'utilizzo della CPU delle attività utente raggruppate per tipo di operazione o categoria.
Sebbene la metrica Utilizzo della CPU per priorità nella sezione precedente abbia aiutato a determinare se un'attività utente o di sistema ha causato un aumento dell'utilizzo delle risorse della CPU, con la metrica Utilizzo della CPU per tipo di operazione puoi approfondire e scoprire il tipo di operazione avviata dall'utente alla base di questo aumento dell'utilizzo della CPU.
Identificare la richiesta utente che contribuisce all'aumento dell'utilizzo della CPU
Per determinare quale richiesta utente specifica è responsabile dell'impennata dell'utilizzo della CPU nel grafico del tipo di operazione executesql_select_readonly visualizzato nella Figura 2, utilizzerai le tabelle di statistiche di introspezione integrate per ottenere maggiori informazioni.
Utilizza la tabella seguente come guida per determinare su quale tabella delle statistiche eseguire query in base al tipo di operazione che causa un elevato utilizzo della CPU.
Tipo di operazione | Query | Leggi | Transazione |
---|---|---|---|
read_readonly | No | Sì | No |
read_readwrite | No | Sì | Sì |
read_withpartitiontoken | No | Sì | No |
executesql_select_readonly | Sì | No | No |
executesql_select_withpartitiontoken | Sì | No | No |
executesql_select_readwrite | Sì | No | Sì |
executesql_dml_readwrite | Sì | No | Sì |
executesql_dml_partitioned | No | No | Sì |
beginorcommit | No | No | Sì |
Ad esempio, se il problema riguarda read_withpartitiontoken, risolvilo utilizzando le statistiche di lettura.
In questo scenario, l'operazione executesql_select_readonly sembra essere la causa dell'aumento dell'utilizzo della CPU che stai osservando. In base alla tabella precedente, dovresti esaminare le statistiche delle query per scoprire quali query sono costose, vengono eseguite di frequente o analizzano molti dati.
Per trovare le query con l'utilizzo della CPU più elevato nell'ora precedente, puoi eseguire la seguente query sulla tabella delle statistiche query_stats_top_hour
.
SELECT text,
execution_count AS count,
avg_latency_seconds AS latency,
avg_cpu_seconds AS cpu,
execution_count * avg_cpu_seconds AS total_cpu
FROM spanner_sys.query_stats_top_hour
WHERE interval_end =
(SELECT MAX(interval_end)
FROM spanner_sys.query_stats_top_hour)
ORDER BY total_cpu DESC;
L'output mostrerà le query ordinate in base all'utilizzo della CPU. Una volta identificata la query con l'utilizzo della CPU più elevato, puoi provare le seguenti opzioni per ottimizzarla.
Esamina il piano di esecuzione della query per identificare eventuali inefficienze che potrebbero contribuire a un utilizzo elevato della CPU.
Controlla la query per assicurarti che segua le best practice per SQL.
Esamina la progettazione dello schema del database e aggiornalo per consentire query più efficienti.
Stabilisci una linea di base per il numero di volte in cui Spanner esegue una query durante un intervallo. Utilizzando questa base di riferimento, potrai rilevare e studiare la causa di eventuali deviazioni impreviste dal comportamento normale.
Se non riesci a trovare una query che richiede molta CPU, aggiungi capacità di calcolo all'istanza. L'aggiunta di capacità di calcolo fornisce più risorse CPU e consente a Spanner di gestire un carico di lavoro più elevato. Per ulteriori informazioni, consulta Aumento della capacità di calcolo.
Passaggi successivi
Scopri di più sulle metriche di utilizzo della CPU.
Scopri altri strumenti di introspezione.
Scopri di più sul monitoraggio con Cloud Monitoring.
Scopri di più sulle best practice per SQL per Spanner.
Consulta l'elenco delle Metriche di Spanner.