Innanzitutto direi che probabilmente vuoi disattivare le connessioni persistenti poiché fanno quasi sempre 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. Anche questa è una cosa importante da verificare.
In terzo luogo direi che vuoi accendere il registro delle query lente di MySQL per tenere d'occhio tutte le query che richiedono molto tempo e utilizzarlo per assicurarti di non avere domande che bloccano le tabelle chiave per troppo tempo.
Alcune altre cose che è possibile verificare sarebbero eseguire la seguente query mentre il carico della CPU è elevato:
SHOW PROCESSLIST;
Questo ti mostrerà tutte le query che sono attualmente in esecuzione o in coda per essere eseguite, qual è la query e cosa sta facendo (questo comando troncerà la query se è troppo lunga, puoi usare SHOW FULL PROCESSLIST per vedere il testo completo della query) .
Ti consigliamo inoltre di tenere d'occhio elementi come dimensioni del buffer, cache della tabella , cache delle query e innodb_buffer_pool_size (se si sta utilizzando InnoDB tabelle) come tutte queste allocazioni di memoria può avere un effetto sulle prestazioni delle query che può causare a MySQL mangiare CPU.
Probabilmente vorrai anche dare una lettura di quanto segue in quanto contengono alcune buone informazioni.
È anche un'ottima idea usare un profiler. Qualcosa che puoi attivare quando vuoi che ti mostrerà quali query è in esecuzione nella tua applicazione, se ci sono query duplicate, quanto tempo impiegano, ecc. Ecc. Un esempio di qualcosa come questo è quello su cui sto lavorando PHP Profiler ma ce ne sono molti là fuori. Se stai utilizzando un software come Drupal, Joomla o Wordpress, ti consigliamo di fare un giro all'interno della community in quanto probabilmente ci sono moduli disponibili per loro che ti consentono di ottenere queste informazioni senza dover integrare manualmente nulla.