Niedawno miałem problemy z thrashowaniem w wyniku braku pamięci. (Mój VPS ma łącznie 256 mln)
Próbuję dostroić MySQL za pomocą mysqltuner.pl i uzyskać następujące wyniki:
-------- Statystyki ogólne ---------------------------------------- ----------
[-] Pominięto sprawdzanie wersji skryptu MySQLTuner
[OK] Aktualnie działająca obsługiwana wersja MySQL 5.0.51a-3ubuntu5.4-log
[OK] Działa w architekturze 64-bitowej
-------- Statystyki silnika pamięci masowej --------------------------------------- ----
[-] Status: + Archiwum -BDB -Federated -InnoDB -ISAM -NDBCluster
[-] Dane w tabelach MyISAM: 114 mln (tabele: 454)
[!!] Suma podzielonych tabel: 34
-------- Wskaźniki wydajności ---------------------------------------- ---------
[-] Up: 40 s (570 q [14.250 qps], 23 conn, TX: 154K, RX: 23K)
[-] Odczyt / zapis: 100% / 0%
[-] Całkowita liczba buforów: 338,0 mln globalnych + 2,7 mln na wątek (maks. 20 wątków)
[!!] Maksymalne możliwe użycie pamięci: 392,9 mln (153% zainstalowanej pamięci RAM)
[OK] Wolne zapytania: 0% (5/570)
[OK] Najwyższe wykorzystanie dostępnych połączeń: 15% (3/20)
[!!] Rozmiar bufora klucza / całkowite indeksy MyISAM: 8,0 mln / 9,4 mln
[!!] Wskaźnik trafień bufora klucza: 57,1% (7 pamięci podręcznych / 3 odczyty)
[OK] Wydajność bufora zapytań: 21,9% (7 z pamięci podręcznej / 32 wybory)
[OK] Zapytanie ściąga pamięć podręczną dziennie: 0
[OK] Sortowanie wymagające tabel tymczasowych: 0% (0 sortowania temp / 1 sortowania)
[OK] Tabele tymczasowe utworzone na dysku: 0% (0 na dysku / łącznie 32)
[OK] Współczynnik trafień w pamięci podręcznej wątków: 86% (3 utworzone / 23 połączenia)
[OK] Współczynnik trafień w pamięci podręcznej tabeli: 26% (128 otwartych / 484 otwartych)
[OK] Zastosowano limit otwartych plików: 25% (259 / 1K)
[OK] Blokady tabeli nabyte natychmiast: 100% (492 natychmiast / 492 blokad)
-------- Zalecenia ----------------------------------------- ------------
Ogólne zalecenia:
Uruchom OPTIMIZE TABLE, aby defragmentować tabele w celu uzyskania lepszej wydajności
MySQL zaczął działać w ciągu ostatnich 24 godzin - zalecenia mogą być niedokładne
Zmniejsz ogólny ślad pamięci MySQL dla stabilności systemu
Zmienne do dostosowania:
*** Maksymalne użycie pamięci MySQL jest niebezpiecznie wysokie ***
*** Dodaj RAM przed zwiększeniem zmiennych bufora MySQL ***
key_buffer_size (> 9,4 mln)
Ale jestem trochę zdezorientowany, jak zmniejszyć maksymalne zużycie pamięci? Wygląda na to, że opiera się na key_buffer i max_connections, ale musi być coś jeszcze zaangażowanego?
my.cnf:
key_buffer = 8 mln max_allowed_packet = 12 mln thread_stack = 128 KB thread_cache_size = 8 max_connections = 20 table_cache = 128 tmp_table_size = 256 M. max_heap_table_size = 256M join_buffer_size = 256 KB query_cache_limit = 8M query_cache_size = 64M
Próbowałem przeczytać artykuły na temat strojenia MySQL, ale wydają się one skierowane do osób, które już wiedzą, co robią! Każda pomoc będzie mile widziana. Dzięki!