Questa mattina ho notato che il carico del nostro server MySQL stava salendo alle stelle. Max dovrebbe essere 8 ma ha colpito più di 100 in un punto. Quando ho controllato l'elenco dei processi ho trovato molte query di aggiornamento (quelle semplici, che incrementavano un "hitcounter") che erano nello stato query end
. Non potremmo ucciderli (beh, potremmo, ma sono rimasti nello stato killed
indefinitamente) e il nostro sito si è fermato.Un sacco di "Fine query" afferma in MySQL, tutte le connessioni utilizzate in pochi minuti
Abbiamo avuto molti problemi a riavviare il servizio e abbiamo dovuto forzare alcuni processi. Quando lo abbiamo fatto, siamo riusciti a far tornare MySQLd, ma i processi hanno iniziato a riacquistare immediatamente. Per quanto ne sappiamo, nessuna configurazione è stata modificata a questo punto.
Quindi, abbiamo modificato innodb_flush_log_at_trx_commit
da 2 a 1 (si noti che abbiamo bisogno di conformità ACID) nella speranza che questo risolva il problema e impostare le connessioni in PHP/PDO per essere persistenti. Questo sembrava funzionare per un'ora o giù di lì, e poi le connessioni iniziarono a esaurirsi di nuovo.
Fortunatamente, ho impostato un server slave fino a un paio di mesi fa e sono stato in grado di promuoverlo e per il momento sta assorbendo il gioco, ma ho bisogno di capire perché questo è successo e come fermarlo, dal momento che lo schiavo il server è notevolmente sottodimensionato rispetto al master, quindi ho bisogno di tornare presto.
Qualcuno ha qualche idea? Potrebbe essere che qualcosa debba essere ripulito? Non so cosa, forse i registri binari o qualcosa del genere? Qualche idea? È estremamente importante poter recuperare questo server come il master ASAP ma francamente non ho idea di dove cercare e tutto ciò che ho provato finora ha portato solo a una soluzione temporanea.
Help! :)
Grazie, questa era la soluzione per il nostro problema.Per gli altri che trovano questa risposta se si sta utilizzando un cluster MySQL di Galera, controllare tutti i server per lo spazio su disco in quanto rimarranno bloccati su "query end" anche se è solo uno dei nodi pieno. – chris