Använd 50 % av tillgängligt RAM-minne för att testa:
Du kan minska innodb_buffer_pool_size väldigt lågt för att se om det hjälper:
#/etc/my.cnf
innodb_buffer_pool_size = 1M
En tumregel är att sätta innodb_buffer_pool_size till 50 % av tillgängligt RAM-minne för ditt test med lågt minne. Det betyder att du startar servern och allt utom MySQL InnoDB. Se hur mycket RAM-minne du har. Använd sedan 50 % av det för InnoDB.
För att prova många inställningar för lågt minne samtidigt:
En mer trolig bov är allt annat som finns på den servern, till exempel en webbserver.
Apache?
Använder du Apache och/eller annan webbserver? Om så är fallet, försök att minska RAM-användningen. Till exempel i Apache conf, överväg låga RAM-inställningar som dessa:
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 5
Och begränsa förfrågningarna så här:
MaxRequestsPerChild 300
Starta sedan om Apache.
mod_wsgi:
Om du använder Apache med mod_python, byt till Apache med mod_wsgi.
Pympler:
Om det fortfarande händer, kanske din Django växer stadigt. Testa Django-minnesprofilering med Pympler:
SAR:
Din rapport om misslyckanden en gång per dag, sedan misslyckanden en gång i veckan, kan peka på något slags cron-jobb som körs dagligen eller varje vecka. Till exempel kanske det finns en batchprocess som tar upp mycket RAM-minne, eller en databasdump, etc.
För att spåra RAM-användning och leta efter RAM-toppar i timmen innan MySQL dör, ta en titt på SAR, som är ett utmärkt verktyg:http://www.thegeekstuff.com/2011/03/sar-examples/