Panoramica dell'acquisizione delle prestazioni di Cloud SQL

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 l'istanza subisce un peggioramento 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 delle prestazioni risolve questo problema acquisendo snapshot dettagliati e puntuali 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 a lunga esecuzione.

Esempi di casi d'uso

Questa sezione elenca esempi di casi d'uso di come puoi utilizzare l'acquisizione delle prestazioni dopo averla abilitata 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 di semaforo, che identifica una contesa di mutex specifica (ad esempio, sull'indice hash adattivo) come causa principale.

Analizzare il peggioramento delle query

Problema: le prestazioni delle query peggiorano 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 elevato di log di annullamento. Il log identifica la transazione a lunga esecuzione, l'utente e il testo della query.

Esaminare il ritardo della replica

Problema: una replica di lettura è significativamente in ritardo rispetto alla sua origine.

Esempio di utilizzo: configura una soglia di trigger con un 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: configura un trigger di soglia per transactionDurationThreshold. Il log di acquisizione delle prestazioni identifica la transazione che supera la soglia. Puoi utilizzare queste informazioni per esaminare.

Come vengono acquisiti i dati sul rendimento

L'acquisizione delle prestazioni funziona come un servizio basato su agenti che monitora l'istanza. Quando abiliti l'acquisizione delle prestazioni, l'istanza Cloud SQL esegue le seguenti operazioni per acquisire i dati sul rendimento:

  1. L'agente esamina 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.

  2. 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 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.

  3. Quando viene attivata un'acquisizione delle prestazioni, l'agente si connette al database ed esegue una serie di comandi di diagnostica per acquisire uno snapshot dettagliato.

  4. Le informazioni acquisite vengono formattate in voci di log e inviate direttamente a Cloud Logging del progetto per l'istanza Cloud SQL in un flusso 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: si attiva per le repliche quando il ritardo della 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 il logging per le singole transazioni che vengono eseguite per una durata superiore a quella specificata. Ad esempio, puoi configurare il trigger per registrare qualsiasi singola transazione che viene eseguita per più di 10 minuti.

Periodo di raffreddamento dopo un'acquisizione delle prestazioni

Per evitare un logging eccessivo e un overhead del sistema durante un evento di prestazioni sostenuto, l'acquisizione delle prestazioni implementa un periodo di raffreddamento di 30 minuti dopo l'acquisizione di uno snapshot riuscita. 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 ulteriori informazioni 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 disabiliti Query Insights, disabiliti anche l'acquisizione delle prestazioni.
  • L'acquisizione delle prestazioni è disponibile solo per Cloud SQL per MySQL 5.7 e versioni successive.

Passaggi successivi