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 cpu
attesa si verifica quando un thread è attivo CPU o è in attesaCPU.
Versioni del motore supportate
Queste informazioni sull'evento di attesa sono supportate per le seguenti versioni del motore:
-
Aurora SQL Le mie versioni 2 e 3
Context
Per ogni vCPU, una connessione può funzionare su questoCPU. In alcune situazioni, il numero di connessioni attive pronte per l'esecuzione è superiore al numero divCPUs. Questo squilibrio si traduce in connessioni in attesa di CPU risorse. Se il numero di connessioni attive rimane costantemente superiore al numero divCPUs, allora nell'istanza si verifica un CPU conflitto. La contesa provoca il verificarsi dell’evento di attesa cpu
.
Nota
La metrica Performance Insights per CPU èDBLoadCPU
. Il valore di DBLoadCPU
può differire dal valore della CloudWatch metricaCPUUtilization
. Quest'ultima metrica viene raccolta da HyperVisor per un'istanza di database.
Le metriche del sistema operativo Performance Insights forniscono informazioni dettagliate sull'CPUutilizzo. Ad esempio, è possibile visualizzare i seguenti parametri:
-
os.cpuUtilization.nice.avg
-
os.cpuUtilization.total.avg
-
os.cpuUtilization.wait.avg
-
os.cpuUtilization.idle.avg
Performance Insights riporta l'CPUutilizzo da parte del motore di database comeos.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'CPUutilizzo, prendete in considerazione le seguenti strategie:
-
Aumentare la CPU capacità 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.
Argomenti
Identifica le sessioni o le query che causano il problema
Per trovare le sessioni e le query, consulta la SQL tabella Top di Performance Insights per le SQL istruzioni con il CPU carico più elevato. Per ulteriori informazioni, consulta Per analizzare il parametro utilizzando il pannello di controllo di Performance Insights.
In genere, una o due SQL istruzioni occupano la maggior parte dei CPU cicli. Concentra gli sforzi su queste istruzioni. Supponiamo che l'istanza DB ne abbia 2 vCPUs con un carico DB di 3,1 sessioni attive medie (AAS), tutte nello CPU stato. In questo caso, l'istanza è CPU vincolata. Considera le strategie seguenti:
-
Esegui l'upgrade a una classe di istanze più grande con più istanzevCPUs.
-
Ottimizza le tue query per ridurre il CPU carico.
In questo esempio, le SQL query principali hanno un carico in DB di 1,5AAS, tutte nello CPU stato. Un'altra SQL istruzione ha un carico di 0,1 nello CPU stato. In questo esempio, se si interrompe l'SQListruzione lowest-load, non si riduce in modo significativo il carico del database. Tuttavia, se si ottimizzano le due query ad alto carico per renderle due volte più efficienti, si elimina il collo di bottiglia. CPU Se si riduce il CPU carico dell'1,5 del 50 AAS percento, il valore AAS per ogni istruzione scende a 0,75. Il carico totale del DB impiegato CPU è ora 1,6AAS. Questo valore è inferiore alla CPU linea v massima di 2.0.
Per un'utile panoramica sulla risoluzione dei problemi con Performance Insights, consulta il post del blog Analizza i miei SQL carichi di lavoro di Amazon Aurora con Performance Insights
Analizza e ottimizza l'elevato carico CPU di lavoro
Dopo aver identificato la o le query che aumentano l'CPUutilizzo, puoi 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, vedere Ottimizzazione delle interrogazioni con EXPLAIN nella documentazione
personale. SQL -
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, vedi SHOWPROFILEDichiarazione
nella mia SQL documentazione. -
Eseguire l’istruzione
ANALYZE TABLE
.Utilizzate questa istruzione per aggiornare le statistiche dell'indice per le tabelle a cui accede la query ad alto CPU consumo. Analizzando l'istruzione, è possibile aiutare l'ottimizzatore a scegliere un piano di esecuzione appropriato. Per ulteriori informazioni, vedere ANALYZETABLEDichiarazione
nella SQL documentazione personale.
Segui le linee guida per migliorare CPU l'utilizzo
Per migliorare CPU l'utilizzo in un'istanza di database, segui queste linee guida:
-
Assicurarsi che tutte le query utilizzino indici appropriati.
-
Scopri se è possibile utilizzare query parallele di Aurora. È possibile utilizzare questa tecnica per ridurre l'CPUutilizzo sul nodo principale riducendo l'elaborazione delle funzioni, il filtraggio delle righe e la proiezione delle colonne per la clausola.
WHERE
-
Scoprite se il numero di SQL esecuzioni al secondo soddisfa le soglie previste.
-
Scopri se la manutenzione degli indici o la creazione di nuovi indici richiedono i CPU cicli necessari per il tuo 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, consulta il post del blog Come pianificare e ottimizzare Amazon Aurora with My SQL compatibility for consolidated
workload.
Verifica la presenza di congestioni dovute alla connessione
Se il DBLoadCPU
parametro non è molto elevato, ma è elevato, la CPUUtilization
causa dell'elevato CPU utilizzo non è riconducibile al motore di 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
CloudWatchDatabaseConnections
metrica Amazon. -
Il numero di thread in CPU è maggiore del numero di. vCPUs
Se le condizioni precedenti sono vere, considerare di diminuire il numero di connessioni al database. Ad esempio, è possibile utilizzare un pool di connessioni come RDS Proxy. Per conoscere le best practice per una gestione e una scalabilità efficaci delle connessioni, consulta il white paper Amazon SQL DBA Aurora