Optymalizacja zużycia RAM przez MySQL na serwerze

{{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).

Nie jest to opis z serii „jestem pro wyjadaczem”, więc nie spodziewajcie się wodotrysków. Publikuję tutaj jedynie kilka zmian w domyślnej konfiguracji, które optymalizują wykorzystanie RAM.

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

Wyjaśnienia
1 Jak nietrudno się zatem domyślić – najważniejszą zmianą jest wyłączenie schematów
Ten wpis został opublikowany w kategorii Linux, Techniczne i oznaczony tagami , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Jedna odpowiedź do Optymalizacja zużycia RAM przez MySQL na serwerze

  1. Tristian pisze:

    Krótko i na temat, praktyczny wpis :)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *