Limite max_connections su MySQL: prima di aumentarlo controlla che engine stai usando

Un mio cliente storico, acquisito peraltro proprio grazie a questo blog, lamentava da giorni diversi errori di connessione al database. Mi sono accorto grazie a mytop che una serie di query si trovavano tutte in waiting. La tabella in questione era la wp_postmeta, e da phpMyAdmin mi sono potuto rendere conto della sua grande dimensione e soprattutto del fatto che il motore usato fosse MyISAM: una situazione creatasi da una parte perché WordPress è stato installato per la prima volta parecchi anni fa, e poi perché il sito è costantemente aggiornato. Questo comportava lunghe query per l’aggiornamento della tabella caratterizzate da table lock: tutte le altre query devono aspettare che finisca la prima. Ad un certo punto si rischia di toccare il limite max_connections, e quindi i visitatori trovano un messaggio di errore. L’utente inesperto potrebbe essere tentato di aumentare il limite, mettendo così a repentaglio la stabilità del server: come se un automobilista chiedesse al proprio elettrauto di alzare il limite oltre il quale si accende la spia della temperatura dell’acqua per evitare il fastidio.

La soluzione invece è convertire le tabelle in InnoDB, un’operazione che può essere fatta direttamente in phpMyAdmin. Volendo fare le cose per bene si può poi diminuire il key_buffer_size e aumentare l’innodb_buffer_pool_size. Ovviamente InnoDB ha anche degli svantaggi: è più suscettibile ai crash e leggermente più lento sulle singole query; ma almeno il sito è sempre fruibile.

Leave a Comment

%d blogger hanno fatto clic su Mi Piace per questo:

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi