cpu - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

cpu

L’evento di attesa cpu si verifica quando un thread è attivo nella CPU o è in attesa della CPU.

Versioni del motore supportate

Queste informazioni sull'evento di attesa sono supportate per le seguenti versioni del motore:

  • Aurora MySQL versioni 2 e 3

Context

Per ogni vCPU, una connessione può eseguire operazioni su questa CPU. In alcune situazioni, il numero di connessioni attive pronte per l'esecuzione è superiore al numero di vCPUs. Questo squilibrio provoca connessioni in attesa di risorse della CPU. Se il numero di connessioni attive rimane costantemente superiore al numero di vCPU, l'istanza subisce un conflitto della CPU. La contesa provoca il verificarsi dell’evento di attesa cpu.

Nota

Il parametro di Performance Insights per la CPU è DBLoadCPU. Il valore per DBLoadCPU può differire dal valore della CloudWatch metricaCPUUtilization. Quest'ultima metrica viene raccolta da HyperVisor per un'istanza di database.

I parametri del sistema operativo del Performance Insights forniscono informazioni dettagliate sull'utilizzo della CPU. Ad esempio, puoi visualizzare i seguenti parametri:

  • os.cpuUtilization.nice.avg

  • os.cpuUtilization.total.avg

  • os.cpuUtilization.wait.avg

  • os.cpuUtilization.idle.avg

Performance Insights segnala l'utilizzo della CPU da parte del motore del database come os.cpuUtilization.nice.avg.

Probabili cause di aumento delle attese

Quando questo evento si verifica più del normale, eventualmente indicando un problema di prestazioni, le cause tipiche includono le seguenti:

  • Query analitiche

  • Transazioni altamente simultanee

  • Transazioni di lunga durata

  • Un improvviso aumento del numero di connessioni, noto come storm di login

  • Un aumento del cambio di contesto

Azioni

Se l’evento di attesa cpu domina l'attività del database, non indica necessariamente un problema di prestazioni. Rispondi a questo evento solo quando le prestazioni diminuiscono.

A seconda della causa dell'aumento dell'utilizzo della CPU, considerare le seguenti strategie:

  • Aumenta la capacità della CPU dell'host. Questo approccio tipicamente offre un sollievo temporaneo.

  • Identifica le principali query per una potenziale ottimizzazione.

  • Reindirizza alcuni carichi di lavoro di sola lettura verso i nodi del lettore, se applicabile.

Identifica le sessioni o le query che causano il problema

Per trovare le sessioni e le query, guarda la tabella Prime istruzioni SQL in Performance Insights per le istruzioni SQL che hanno il carico più alto della CPU. Per ulteriori informazioni, consulta Per analizzare il parametro utilizzando il pannello di controllo di Performance Insights.

In genere, una o due istruzioni SQL consumano la maggior parte dei cicli della CPU. Concentra gli sforzi su queste istruzioni. Supponiamo che l'istanza database disponga di 2 vCPU con un carico del database di 3.1 sessioni attive medie (AAS), tutte nello stato della CPU. In questo caso, la tua istanza è associata alla CPU. Considera le strategie seguenti:

  • Esegui l’aggiornamento a una classe di istanza più grande con più vCPU.

  • Regola le query per ridurre il carico della CPU.

In questo esempio, le query SQL principali hanno un carico del database di 1,5 AAS, il tutto nello stato della CPU. Un'altra istruzione SQL ha un carico di 0,1 nello stato della CPU. In questo esempio, se si è interrotta l'istruzione SQL con caricamento più basso, non si riduce in modo significativo il carico del database. Tuttavia, se si regolano le due query ad alto carico in modo che siano due volte più efficienti, si elimina il collo di bottiglia della CPU. Se si riduce il carico della CPU di 1,5 AAS del 50%, l'AAS per ogni istruzione diminuisce a 0,75. Il carico totale del databalse speso per la CPU è ora di 1,6 AAS. Questo valore è inferiore alla linea massima di vCPU 2.0.

Per una panoramica utile dell’identificazione e della risoluzione dei problemi con Performance Insights, consulta il post del blogAnalizza i carichi di lavoro di Amazon Aurora MySQL con Performance Insights. Consulta anche l’AWSarticolo di assistenza Come posso identificare e risolvere un elevato utilizzo della CPU sulle istanze di Amazon RDS for MySQL?.

Analizza e ottimizza l'elevato carico di lavoro della CPU

Dopo aver identificato la query o le query che aumentano l'utilizzo della CPU, è possibile ottimizzarle o terminare la connessione. L'esempio seguente mostra come terminare una connessione.

CALL mysql.rds_kill(processID);

Per ulteriori informazioni, consulta mysql.rds_kill.

Se si termina una sessione, l'azione potrebbe innescare un lungo ripristino dello stato precedente.

Seguire le linee guida per l'ottimizzazione delle query

Per ottimizzare le query, prendere in considerazione le seguenti linee guida:

  • Eseguire l’istruzione EXPLAIN.

    Questo comando mostra i singoli passaggi coinvolti nell'esecuzione di una query. Per ulteriori informazioni, consulta Ottimizzazione delle query con EXPLAIN nella documentazione di MySQL.

  • Eseguire l’istruzione SHOW PROFILE.

    Utilizzare questa istruzione per esaminare i dettagli del profilo che possono indicare l'utilizzo delle risorse per le istruzioni eseguite durante la sessione corrente. Per ulteriori informazioni, consulta Istruzione REPAIR TABLE nella documentazione di MySQL.

  • Eseguire l’istruzione ANALYZE TABLE.

    Utilizzare questa istruzione per riaggiornare le statistiche di indice per le tabelle a cui si accede dalla query che consuma CPU elevata. Analizzando l'istruzione, è possibile aiutare l'ottimizzatore a scegliere un piano di esecuzione appropriato. Per ulteriori informazioni, consulta Istruzione ANALYZE TABLE nella documentazione di MySQL.

Segui le linee guida per migliorare l'utilizzo della CPU

Per migliorare l'utilizzo della CPU in un'istanza database, attenersi a queste linee guida:

  • Assicurarsi che tutte le query utilizzino indici appropriati.

  • Scopri se è possibile utilizzare query parallele di Aurora. Si può usare questa tecnica per ridurre l'utilizzo della CPU sul nodo head grazie all'elaborazione della funzione di trasferimento, al filtraggio delle righe e alla proiezione delle colonne per la clausola WHERE.

  • Scopri se il numero di esecuzioni SQL al secondo soddisfa le soglie previste.

  • Scopri se la manutenzione dell'indice o la creazione di nuovi indici occupano i cicli della CPU necessari per il carico di lavoro di produzione. Pianifica le attività di manutenzione al di fuori degli orari del picco di attività.

  • Scopri se è possibile utilizzare il partizionamento per ridurre la serie dei dati delle query. Per ulteriori informazioni, consultare il post del blog.Come pianificare e ottimizzare Amazon Aurora con compatibilità MySQL per carichi di lavoro consolidati.

Verifica la presenza di congestioni dovute alla connessione

Se il parametro DBLoadCPU non è molto alto, ma il parametro CPUUtilization è elevato, la causa dell’utilizzo elevato della CPU risiede al di fuori del motore del database. Un esempio classico è una congestione dovuta alla connessione.

Verificare se le condizioni seguenti sono vere:

  • C'è un aumento sia della metrica Performance Insights che della CPUUtilization CloudWatch DatabaseConnections metrica Amazon.

  • Il numero di thread nella CPU è superiore al numero di vCPU.

Se le condizioni precedenti sono vere, considerare di diminuire il numero di connessioni al database. Ad esempio, è possibile utilizzare un pool di connessione come RDS Proxy. Per conoscere le best practice per una gestione efficace delle connessioni e il dimensionamento, consulta il whitepaper Manuale di Amazon Aurora MySQL DBA per la gestione delle connessioni.