L'acquisizione delle prestazioni di Cloud SQL per MySQL ti aiuta a diagnosticare e risolvere problemi di prestazioni complessi e temporanei nel tuo database MySQL.
Quando la tua istanza subisce un calo delle prestazioni, ad esempio un rallentamento o un blocco del database, le metriche standard potrebbero non essere sufficienti per determinare la causa principale. L'acquisizione del rendimento risolve questo problema acquisendo snapshot dettagliati e point-in-time del database nel momento in cui viene rilevato un problema. Puoi utilizzare trigger configurabili per acquisire snapshot a livello di sistema quando si verificano problemi temporanei e per rilevare transazioni di lunga durata.
Esempi di casi d'uso
Questa sezione elenca esempi di casi d'uso per l'utilizzo dell'acquisizione delle prestazioni dopo l'attivazione per la tua istanza.
Diagnosticare un blocco del database
Problema: un'istanza non risponde da diversi minuti, ma le metriche mostrano solo un calo delle query al secondo (QPS) e un aumento delle connessioni.
Esempio di utilizzo: definisci un trigger di soglia utilizzando runningThreadsThreshold.
Il log di acquisizione delle prestazioni rivela un numero elevato di attese del semaforo, che
identifica una contesa di mutex specifica (ad esempio, sull'indice hash adattivo)
come causa principale.
Analizza il peggioramento delle query
Problema: il rendimento delle query peggiora improvvisamente a livello di sistema.
Esempio di utilizzo: il log di acquisizione delle prestazioni rivela una singola transazione a lunga esecuzione che ha accumulato un numero elevatissimo di log di annullamento. Il log identifica la transazione a esecuzione prolungata, l'utente e il testo della query.
Esamina il ritardo della replica
Problema: una replica di lettura è molto indietro rispetto alla sua origine.
Esempio di utilizzo: configuri una soglia di attivazione di valore elevato per secondsBehindSourceThreshold. Puoi controllare il log di acquisizione delle prestazioni per individuare il GTID specifico che causa il ritardo.
Gestire le transazioni a lunga esecuzione
Problema: un job batch o una query utente viene eseguito per un periodo di tempo eccessivo, mantenendo i blocchi.
Esempio di utilizzo: configuri un trigger di soglia
per transactionDurationThreshold.
Il log di acquisizione delle prestazioni identifica la
transazione che supera la
soglia. Puoi utilizzare queste informazioni per
indagare.
Come vengono acquisiti i dati sul rendimento
L'acquisizione delle prestazioni funziona come un servizio basato su agenti che monitora la tua istanza. Quando attivi l'acquisizione delle prestazioni, l'istanza Cloud SQL esegue le seguenti operazioni per acquisire i dati sulle prestazioni:
L'agente analizza la configurazione del database per leggere i trigger che hai definito. L'agente esamina quindi le metriche del database a un intervallo configurabile, impostato su 30 secondi per impostazione predefinita.
Se viene rilevato un problema e la soglia di un trigger è stata superata, l'agente continua a confrontare lo stato live del database con le tue regole. Per evitare falsi allarmi dovuti a picchi temporanei, l'agente attiva un'acquisizione completa delle prestazioni solo se rileva il problema per un numero consecutivo di probe. Ad esempio, l'agente potrebbe attivare un'acquisizione delle prestazioni se rileva che il numero di thread è elevato per tre probe di fila.
Quando viene attivata un'acquisizione delle prestazioni, l'agente si connette al database ed esegue una serie di comandi diagnostici per acquisire uno snapshot dettagliato.
Le informazioni acquisite vengono formattate in voci di log e inviate direttamente a Cloud Logging del progetto per l'istanza Cloud SQL in uno stream di log specifico denominato
mysql-performance-capture.log.
Trigger configurabili
Puoi configurare i seguenti trigger per l'acquisizione delle prestazioni:
runningThreadsThreshold: si attiva quando il numero di thread attivi in esecuzione su un'istanza primaria supera il valore specificato. Ad esempio, puoi configurare la soglia per eseguire l'acquisizione delle prestazioni se il numero di thread attivi in esecuzione supera 100.secondsBehindSourceThreshold: trigger per le repliche quando il ritardo di replica supera il numero di secondi specificato. Ad esempio, puoi configurare la soglia per eseguire l'acquisizione delle prestazioni se il ritardo della replica di lettura è superiore a 300 secondi.transactionDurationThreshold: attiva la registrazione per le singole transazioni che vengono eseguite più a lungo della durata specificata. Ad esempio, puoi configurare il trigger per registrare qualsiasi singola transazione che dura più di 10 minuti.
Periodo di raffreddamento dopo l'acquisizione di una prestazione
Per evitare la registrazione eccessiva e il sovraccarico del sistema durante un evento di rendimento prolungato, l'acquisizione del rendimento implementa un periodo di raffreddamento di 30 minuti dopo l'acquisizione riuscita di uno snapshot. Questo periodo di raffreddamento viene attivato automaticamente per impedire all'agente di attivare nuove acquisizioni ridondanti mentre il sistema si trova in uno stato di problema esteso.
Prezzi
L'acquisizione delle prestazioni archivia i log in Cloud Logging, il che può comportare costi di archiviazione aggiuntivi.
Per saperne di più sui prezzi per l'archiviazione dei log in Logging, consulta la pagina Prezzi.
Limitazioni
- Per utilizzare l'acquisizione delle prestazioni, devi aver abilitato Query Insights. Se disattivi Query Insights, disattivi anche l'acquisizione delle prestazioni.
- L'acquisizione delle prestazioni è disponibile solo per Cloud SQL per MySQL 5.7 e versioni successive.
Passaggi successivi
- Configurare l'acquisizione delle prestazioni
- Visualizzare i log di acquisizione del rendimento
- Monitorare le istanze