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!