Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo elevato della CPU MySQL

Per prima cosa direi che probabilmente vuoi disattivare le connessioni persistenti poiché quasi sempre fanno più male che bene.

In secondo luogo direi che vuoi ricontrollare i tuoi utenti MySQL, solo per assicurarti che non sia possibile per nessuno connettersi da un server remoto. Questa è anche una cosa importante per la sicurezza da controllare.

In terzo luogo, direi che vuoi attivare Query lenta MySQL Accedi per tenere d'occhio tutte le query che richiedono molto tempo e utilizzalo per assicurarti che non ci siano query che blocchino le tabelle delle chiavi per troppo tempo.

Alcune altre cose che puoi controllare sarebbero eseguire la seguente query mentre il carico della CPU è alto:

SHOW PROCESSLIST;

Questo ti mostrerà tutte le query attualmente in esecuzione o in coda da eseguire, qual è la query e cosa sta facendo (questo comando troncherà la query se è troppo lunga, puoi usare SHOW FULL PROCESSLIST per vedere il testo completo della query) .

Dovrai anche tenere d'occhio cose come le dimensioni del buffer, cache tabella , cache delle query e innodb_buffer_pool_size (se stai usando le tabelle innodb) poiché tutte queste allocazioni di memoria possono influire sulle prestazioni delle query che possono causare il consumo di CPU di MySQL.

Probabilmente vorrai anche leggere quanto segue perché contiene alcune buone informazioni.

È anche una buona idea usare un profiler. Qualcosa che puoi attivare quando vuoi che ti mostri quali query è in esecuzione la tua applicazione, se ci sono query duplicate, quanto tempo stanno impiegando, ecc, ecc. Un esempio di qualcosa del genere è quello su cui ho lavorato chiamato Profilatore PHP ma ce ne sono molti là fuori. Se stai utilizzando un software come Drupal, Joomla o Wordpress, ti consigliamo di chiedere in giro all'interno della community poiché probabilmente ci sono moduli disponibili per loro che ti consentono di ottenere queste informazioni senza dover integrare manualmente nulla.