Il thread MySQL si blocca nello stato finale

Uno dei nostri server di produzione master di replica mostra alcuni comportmenti veramente dispari per i quali non riesco a trovare una soluzione.

Alcuni thread presenti su questo server si bloccano in stato "fine". Ciò accade puramente random, ma quando ciò accade, il thread sta sempre aggiornando o inserendo righe in una tabella. Le tabelle in cui è in esecuzione la query differiscono ma sono sempre in una tabella MyISAM e in una gamma di tre diverse tabelle.

Quando un thread va in stato di fine tutti gli altri thread vengono bloccati con lo stato bloccato. E quando dico tutte le discussioni voglio dire tutto, anche i thread che non stanno interrogando lo stesso database o la tabella.

I server web continuano a fare una coda di query al server di database senza get una risposta. Questo in definitiva provoca l'esaurimento dei server web da socket. A quel momento tutte le richieste ai domini vengono negate. I server di database non mostrano attività di I / O o processre durante il tempo in cui il thread è in stato "fine". Quando si verifica questo problema, devo uccidere manualmente il thread. Anche questo non fa altro che cambiare stato di command a 'ucciso'. La maggior parte dei thread spariscono dopo circa 100 secondi.

Le tabelle su cui i thread stanno eseguendo le query quando vanno in end-state variano in size ma sono da 20 a 100 MB. Al momento in cui questi problemi si verificano, queste tabelle vengono spesso aggiornate, ma non in modi estremi. Penso che gli aggiornamenti vanno da 3 a 10 al secondo.

Alcune specifiche sul server. Il sistema operativo è CentOS 5.4 con MySQL 5.0.77-log. Il processre è un AMD Opteron 2378, i harddrive sono un arrays RAID 1 + 0 di Corsair X32 32GB SSD.

Penso che le SSD potrebbero essere parte della causa del problema, ma non riesco a trovare alcun dato per confermarlo. Gli azionamenti sono stati molto stabili per un po '.

Ho letto la documentazione sulla guida di riferimento di MySQL su General Thread States che afferma che durante lo stato finale il registro binario e la cache di query vengono aggiornati. Forse questo ha qualcosa a che fare con la causa del problema? Non vorrei che le direttive di configuration potrebbero dare una soluzione di lavoro.

Non ho provato a distriggersre la cache di query e non sono in grado di distriggersre la replica in quanto è un server di produzione in esecuzione. Il fatto che questo sia un server di produzione in esecuzione mi faccia attenzione quando cambiano i parametri, ad esempio le impostazioni della cache di query, a less che non so certo che questo risolverà il problema.

Non sono stato in grado di riprodurre il problema con alcuni dei miei test-script. Durante la lettura, la scrittura e l'aggiornamento delle tabelle che causano i problemi pesanti il ​​problema non si verifica. Il verificarsi di questo problema è puramente random.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.