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

Il tentativo di aggiornare 640.000 righe in MySQL perde la connessione al server MySQL durante la query

C'è un altro motivo potenziale per questo errore, ed è il pool di connessioni ActiveRecord mietitore . Quando abilitato, il mietitore esegue la scansione del pool di connessioni per le connessioni "morte" e le chiude. Nei miei test, sembra essere troppo zelante e chiude anche connessioni perfettamente attive (in genere quelle che eseguono query leggermente più grandi).

Prova a cancellare reaping_frequency dalla configurazione del tuo DB (che lo disattiva) e vedi se questo aiuta. Scansiona la tua base di codice per quella stringa e assicurati che non sia impostata (o semplicemente rimossa!). Se vedi una riga come config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 , sappi che il || 10 sta effettivamente impostando un valore predefinito basso di 10 secondi. Questo modello è rimasto nella codebase di rails per un certo periodo, fino a quando la modifica non è stata ripristinata a causa di vari problemi, tra cui uccidere le query di lunga durata , ma è ancora consigliato da Heroku .

Se la disabilitazione del reaper risolve le cose, consiglierei di lasciarlo disabilitato. Rails non lo imposta più per impostazione predefinita e sembra causare più problemi di quanti ne risolva.

Ho avuto un errore come il tuo ed è così che l'ho risolto. Personalmente lo tengo disabilitato. Ho scritto del mio problema specifico in modo più dettagliato sul mio blog .