K testování použijte 50 % dostupné paměti RAM:
Můžete snížit hodnotu innodb_buffer_pool_size na velmi nízkou hodnotu, abyste zjistili, zda to pomůže:
#/etc/my.cnf
innodb_buffer_pool_size = 1M
Základním pravidlem je nastavit innodb_buffer_pool_size na 50 % dostupné paměti RAM pro testování nedostatku paměti. To znamená, že spustíte server a vše kromě MySQL InnoDB. Podívejte se, kolik máte RAM. Pak použijte 50 % z toho pro InnoDB.
Chcete-li vyzkoušet mnoho nastavení pro nedostatek paměti najednou:
Pravděpodobnějším viníkem je cokoli jiného na tomto serveru, například webový server.
Apache?
Používáte Apache a/nebo jiný webový server? Pokud ano, zkuste snížit jeho využití RAM. Například v Apache conf zvažte nastavení nízké paměti RAM, jako je tato:
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 5
A omezte požadavky takto:
MaxRequestsPerChild 300
Poté restartujte Apache.
mod_wsgi:
Pokud používáte Apache s mod_python, přepněte na Apache pomocí mod_wsgi.
Pympler:
Pokud se to stále děje, je možné, že váš Django neustále roste. Vyzkoušejte profilování paměti Django pomocí Pympler:
SAR:
Vaše zpráva o selháních jednou za den a poté selháních jednou za týden by mohla ukazovat na nějaký druh úlohy cron běžící denně nebo týdně. Například možná existuje dávkový proces, který zabírá hodně paměti RAM nebo výpis z databáze atd.
Chcete-li sledovat využití paměti RAM a hledat špičky paměti RAM za hodinu před zánikem MySQL, podívejte se na SAR, což je skvělý nástroj:http://www.thegeekstuff.com/2011/03/sar-examples/