Utilizza il 50% della RAM disponibile per testare:
Puoi ridurre innodb_buffer_pool_size molto in basso per vedere se aiuta:
#/etc/my.cnf
innodb_buffer_pool_size = 1M
Una regola pratica è impostare innodb_buffer_pool_size sul 50% della RAM disponibile per i test di memoria insufficiente. Ciò significa che avvii il server e tutto tranne MySQL InnoDB. Guarda quanta RAM hai. Quindi usa il 50% di quello per InnoDB.
Per provare molte impostazioni di memoria insufficiente contemporaneamente:
Un colpevole più probabile è qualsiasi altra cosa su quel server, come un server web.
Apache?
Stai usando Apache e/o un altro web server? In tal caso, prova a ridurre l'utilizzo della RAM. Ad esempio in Apache conf, considera le impostazioni della RAM bassa come queste:
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 5
E blocca le richieste in questo modo:
MaxRequestsPerChild 300
Quindi riavvia Apache.
mod_wsgi:
Se stai usando Apache con mod_python, passa ad Apache con mod_wsgi.
Pimpler:
Se sta ancora accadendo, forse il tuo Django è in costante crescita. Prova la profilazione della memoria di Django con Pympler:
SAR:
Il tuo rapporto di errori una volta al giorno, quindi errori una volta alla settimana, potrebbe indicare una sorta di lavoro cron in esecuzione quotidianamente o settimanalmente. Ad esempio, forse c'è un processo batch che occupa molta RAM, o un dump del database, ecc.
Per tenere traccia dell'utilizzo della RAM e cercare picchi di RAM nell'ora prima che MySQL muoia, dai un'occhiata a SAR, che è un ottimo strumento:http://www.thegeekstuff.com/2011/03/sar-examples/