Salta al contenuto

Come posso risolvere l'utilizzo elevato della CPU e la lentezza delle prestazioni delle query dopo aver aggiornato la mia istanza database Amazon RDS per MySQL o Aurora compatibile con MySQL?

4 minuti di lettura
0

È stato effettuato un importante aggiornamento della versione della mia istanza database Amazon Relational Database Service (Amazon RDS) per MySQL o Amazon Aurora compatibile con MySQL. Ora le prestazioni delle query sono lente e l'utilizzo della CPU è elevato.

Risoluzione

Prerequisiti:

Per evitare problemi di diagnosi errate, struttura correttamente il flusso di lavoro per la risoluzione dei problemi e utilizza gli strumenti e i servizi AWS. Per ulteriori informazioni, fai riferimento ai seguenti articoli:

Verifica la presenza di problemi specifici relativi all'aggiornamento

Quando aggiorni un'istanza, ad esempio da Aurora 5.7 compatibile con MySQL a Aurora 8.0 compatibile con MySQL, l'aggiornamento potrebbe rimuovere alcune funzionalità dall'istanza.

Se l'istanza utilizza funzionalità obsolete, potresti riscontrare problemi con le sue prestazioni. Per verificare se la versione dell'istanza utilizza funzionalità obsolete che influiscono sul carico di lavoro, consulta Note di rilascio di Amazon Aurora edizione compatibile con MySQL. Oppure consulta MySQL 8.0 Release notes (Note di rilascio di MySQL 8.0) sul sito web MySQL.

Nel seguente esempio di scenario, aggiorni un cluster di Aurora 5.7 compatibile con MySQL a un cluster di Aurora 8.0 compatibile con MySQL. Dopo l'aggiornamento, la CPU dell'istanza di scrittura raddoppia, anche se le query, i piani di esecuzione e i modelli di carico di lavoro sono gli stessi.

Per risolvere il problema, puoi esaminare le metriche del cluster di Amazon RDS per MySQL o di Aurora compatibile con MySQL. In base al problema, confronta le relative metriche del cluster per la versione precedente e per la quella aggiornata.

Esempio di metriche di Aurora 5.7 compatibile con MySQL:

SHOW GLOBAL STATUS LIKE 'Qcache%';

Esempio di metriche di Aurora 8.0 compatibile con MySQL:

`mysql> SHOW STATUS LIKE 'Qcache%';`  
`+-------------------------+--------+`  
`| Variable_name | Value |`  
`+-------------------------+--------+`  
`| Qcache_free_blocks | 36 |`  
`| Qcache_free_memory | 138488 |`  
`| Qcache_hits | 79570 |`  
`| Qcache_inserts | 27087 |`  
`| Qcache_lowmem_prunes | 3114 |`  
`| Qcache_not_cached | 22989 |`  
`| Qcache_queries_in_cache | 415 |`  
`| Qcache_total_blocks | 912 |`  
`+-------------------------+--------+`

In questo esempio, Aurora 8.0 compatibile con MySQL ha rimosso una funzionalità che utilizzava la cache per le query in modo da evitare esecuzioni complete. Senza questa funzionalità, Aurora MySQL esegue completamente tutte le query raddoppiando il carico di lavoro.

Se noti picchi nella CPU dell'istanza, esamina le seguenti metriche:

  • Query
  • Com_select
  • Innodb_rows_read

Per risolvere i problemi relativi a queste metriche, completa le seguenti attività:

Ulteriori passaggi per la risoluzione dei problemi

Puoi confrontare la versione precedente dei piani di esecuzione con i piani di esecuzione della versione aggiornata per analizzare meglio i problemi. Per confrontare le impostazioni dei gruppi di parametri, utilizza la query EXPLAIN FORMAT=JSON. Le configurazioni critiche, come EXPLAIN FORMAT=JSON devono essere le stesse in entrambe le versioni. Per ulteriori informazioni, consulta Configuring InnoDB Buffer Pool Size (Configurazione della dimensione del pool di buffer di InnoDB) e EXPLAIN Statement (Istruzione EXPLAIN) sul sito web MySQL.

È consigliabile utilizzare la funzionalità di clonazione di Aurora per testare gli aggiornamenti in un ambiente di gestione temporanea. Puoi utilizzare strumenti come Sysbench per simulare i carichi di lavoro nell'ambiente di gestione temporanea. Quindi utilizza strumenti AWS come AWS Database Insights e Monitoraggio avanzato per monitorare le metriche principali.

AWS UFFICIALEAggiornata 7 mesi fa