{{MySQL}} od wersji 5.6 ma domyślnie włączone [1]Jak nietrudno się zatem domyślić – najważniejszą zmianą jest wyłączenie schematów performance_schema, które bardzo lubi konsumować {{RAM}}. Oczywiście poniekąd jest to dobre, bo czas dostępu się zmniejsza i jak to zauważył michal_s na kanale #wordpress-pl (@freenode.net), to „RAM jest wyłącznie po to, aby go używać„. Zgadzam się z tym w 100%. Jednakże w przypadku serwerów, na których mamy nieco mniejsze zaplecze, a baza zaczyna pochłaniać pamięć – pasuje coś z tym zrobić.
I tak w moim przypadku użycie {{RAM|RAMu}} przez {{MySQL}} (samego procesu MySQL) sięgało 600-700 MB, gdzie cały VPS posiada 1 GB. Dochodziło do sytuacji, gdzie ubijane były procesy, a sama baza się też wyłączała. Po niżej opisanych zabiegach zoptymalizowałem wykorzystanie pamięci do ~200 MB (ogółem, a nie samej bazy).
Zmiana ustawień
W pliku /etc/my.cnf wprowadzamy następujące zmiany. Jeśli poszczególnych linii nie macie, dodajcie je. Jeśli są – wystarczy zmienić same parametry.
symbolic-links=0 performance_schema = off thread-cache-size = 0 query-cache-size = 1M join-buffer-size = 128K read-buffer-size = 8K read-rnd-buffer-size = 8K sort-buffer-size = 32K max-heap-table-size = 16K tmp-table-size = 1K max-connections = 10 key-buffer-size = 8M innodb-buffer-pool-size = 5M
U mnie, różnica jest zauważalna gołym okiem. Przy czym ruch na blogu nie jest aż tak duży więc i generowanie (szybkość) strony nie spadło jakoś drastycznie.
Wyjaśnienia
↑1 | Jak nietrudno się zatem domyślić – najważniejszą zmianą jest wyłączenie schematów |
---|
Krótko i na temat, praktyczny wpis :)