Questa pagina descrive le metriche sulla latenza fornite da Spanner. Se la tua applicazione presenta una latenza elevata, utilizza queste metriche per diagnosticare e risolvere il problema.
Puoi visualizzare queste metriche nella console Google Cloud e nella console Cloud Monitoring.
Panoramica delle metriche di latenza
Le metriche sulla latenza per Spanner misurano il tempo necessario al servizio Spanner per elaborare una richiesta. La metrica acquisisce il tempo effettivo trascorso, non il tempo di CPU utilizzato da Spanner.
Queste metriche sulla latenza non includono la latenza che si verifica al di fuori di Spanner, ad esempio la latenza di rete o la latenza all'interno del livello di applicazione. Per misurare altri tipi di latenza, puoi utilizzare Cloud Monitoring per strumentare la tua applicazione con metriche personalizzate.
Puoi visualizzare i grafici delle metriche sulla latenza nella console Google Cloud e nella console Cloud Monitoring. Puoi visualizzare le metriche sulla latenza combinate che includono sia le letture che le scritture oppure puoi visualizzare metriche separate per le letture e le scritture.
In base alla latenza di ogni richiesta, Spanner raggruppa le richieste in percentuale. Puoi visualizzare le metriche di latenza per il 50° e il 99° percentile:
Latenza del 50° percentile: la latenza massima, in secondi, per il 50% più veloce di tutte le richieste. Ad esempio, se la latenza del 50° percentile è di 0,5 secondi, Spanner ha elaborato il 50% delle richieste in meno di 0,5 secondi.
Questa metrica è talvolta chiamata latenza mediana.
Latenza - 99° percentile: la latenza massima, in secondi, per il 99% più rapido delle richieste. Ad esempio, se la latenza del 99° percentile è di 2 secondi, Spanner ha elaborato il 99% delle richieste in meno di 2 secondi.
Latenza e operazioni al secondo
Quando un'istanza elabora un numero ridotto di richieste durante un determinato periodo di tempo, le latenze del 50° e del 99° percentile durante questo periodo non sono indicatori significativi del rendimento complessivo dell'istanza. In queste condizioni, un numero molto ridotto di valori anomali può modificare drasticamente le metriche sulla latenza.
Ad esempio, supponiamo che un'istanza elabori 100 richieste in un'ora. In questo caso, la latenza del 99° percentile per l'istanza durante quell'ora è il tempo necessario per elaborare la richiesta più lenta. Una misurazione della latenza basata su una singola richiesta non è significativa.
Come diagnosticare i problemi di latenza
Le sezioni seguenti descrivono come diagnosticare diversi problemi comuni che potrebbero causare una latenza end-to-end elevata nella tua applicazione.
Per dare un'occhiata rapida alle metriche sulla latenza di un'istanza, utilizza la console Google Cloud. Per esaminare più da vicino le metriche e trovare correlazioni tra latenza e altre metriche, utilizza la console Cloud Monitoring.
Latenza totale elevata, latenza Spanner bassa
Se la latenza della tua applicazione è superiore a quella prevista, ma le metriche di latenza di Spanner sono notevolmente inferiori alla latenza end-to-end totale, potrebbe esserci un problema nel codice dell'applicazione. Se la tua applicazione ha un problema di prestazioni che causa la lentezza di alcuni percorsi di codice, la latenza end-to-end totale per ogni richiesta potrebbe aumentare.
Per verificare questo problema, esegui il benchmark dell'applicazione per identificare i percorsi di codice più lenti del previsto.
Puoi anche commentare il codice che comunica con Spanner, quindi misurare di nuovo la latenza totale. Se la latenza totale non cambia molto, è improbabile che Spanner sia la causa della latenza elevata.
Latenza totale elevata, latenza Spanner elevata
Se la latenza della tua applicazione è superiore a quella prevista e anche le metriche sulla latenza di Spanner sono elevate, esistono alcune cause probabili:
L'istanza ha bisogno di più capacità di calcolo. Se la tua istanza non dispone di risorse CPU sufficienti e il relativo utilizzo della CPU supera il valore massimo consigliato, Spanner potrebbe non essere in grado di elaborare le tue richieste in modo rapido ed efficiente.
Alcune delle tue query causano un elevato utilizzo della CPU. Se le query non sfruttano le funzionalità di Spanner che migliorano l'efficienza, come i parametri di query e gli indici secondari, o se includono un numero elevato di join o altre operazioni che richiedono un'elevata intensità di CPU, le query possono utilizzare una grande parte delle risorse della CPU per l'istanza.
Per verificare la presenza di questi problemi, utilizza la console Cloud Monitoring per cercare una correlazione tra un elevato utilizzo della CPU e una latenza elevata. Controlla anche le statistiche delle query per la tua istanza per identificare eventuali query che richiedono un'elevata elaborazione della CPU nello stesso periodo di tempo.
Se noti che l'utilizzo della CPU e la latenza sono entrambi elevati contemporaneamente, intervieni per risolvere il problema:
Se non hai trovato molte query che richiedono un'elevata elaborazione della 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.
Se hai trovato query che richiedono un'elaborazione intensiva della CPU, esamina i piani di esecuzione delle query per scoprire perché sono lente, quindi aggiorna le query in modo che rispettino le best practice SQL per Spanner.
Potresti anche dover esaminare il design dello schema per il database e aggiornarlo per consentire query più efficienti.
Passaggi successivi
- Monitora l'istanza con la console Google Cloud o la console Cloud Monitoring.
- Scopri come trovare correlazioni tra latenza elevata e altre metriche.
- Scopri come ridurre la latenza di lettura seguendo le best practice SQL e utilizzando i limiti di timestamp.
- Scopri le metriche sulla latenza nelle tabelle di statistiche sulle query, che puoi recuperare utilizzando le istruzioni SQL.
- Scopri in che modo la configurazione dell'istanza influisce sulla latenza.