Di recente ho avuto problemi con il thrashing a causa dell'esaurimento della memoria. (Il mio VPS ha un totale di 256M)
Sto cercando di ottimizzare MySQL utilizzando mysqltuner.pl e ottenere i seguenti risultati:
-------- Statistiche generali ---------------------------------------- ----------
[-] Controllo versione saltata per lo script MySQLTuner
[OK] Attualmente in esecuzione MySQL versione 5.0.51a-3ubuntu5.4-log supportata
[OK] Operativo su architettura a 64 bit
-------- Statistiche del motore di archiviazione --------------------------------------- ----
[-] Stato: + Archivio -BDB -Federated -InnoDB -ISAM -NDBCluster
[-] Dati nelle tabelle MyISAM: 114M (Tabelle: 454)
[!!] Totale tabelle frammentate: 34
-------- Metriche delle prestazioni ---------------------------------------- ---------
[-] Fino a: 40s (570 q [14.250 qps], 23 conn, TX: 154K, RX: 23K)
[-] Letture / Scritture: 100% / 0%
[-] Buffer totali: 338,0 M globali + 2,7 M per thread (20 thread max)
[!!] Utilizzo massimo di memoria possibile: 392,9 M (153% della RAM installata)
[OK] Query lente: 0% (5/570)
[OK] Massimo utilizzo delle connessioni disponibili: 15% (3/20)
[!!] Dimensione buffer chiave / indici MyISAM totali: 8,0 M / 9,4 M
[!!] Percentuale di hit del buffer chiave: 57,1% (7 cache / 3 letture)
[OK] Efficienza cache query: 21,9% (7 cache / 32 selezioni)
[OK] Query cache prunes al giorno: 0
[OK] Ordinamenti che richiedono tabelle temporanee: 0% (0 ordinamenti temporanei / 1 ordinamenti)
[OK] Tabelle temporanee create su disco: 0% (0 su disco / 32 in totale)
[OK] Percentuale di hit della cache del thread: 86% (3 connessioni create / 23)
[OK] Percentuale di riscontri nella cache della tabella: 26% (128 aperti / 484 aperti)
[OK] Limite file aperto utilizzato: 25% (259 / 1K)
[OK] Blocchi tabella acquisiti immediatamente: 100% (492 blocchi immediati / 492 blocchi)
-------- Consigli ----------------------------------------- ------------
Raccomandazioni generali:
Esegui OPTIMIZE TABLE per deframmentare le tabelle per prestazioni migliori
MySQL è stato avviato nelle ultime 24 ore - i consigli potrebbero essere inaccurati
Riduci il tuo footprint di memoria MySQL complessivo per la stabilità del sistema
Variabili da regolare:
*** L'utilizzo massimo della memoria di MySQL è pericolosamente alto ***
*** Aggiungi RAM prima di aumentare le variabili del buffer MySQL ***
key_buffer_size (> 9.4M)
Ma sono un po 'confuso su come ottenere il massimo utilizzo della memoria? Sembra essere basato su key_buffer e max_connections, ma ci deve essere anche qualcos'altro coinvolto?
my.cnf:
key_buffer = 8M max_allowed_packet = 12M thread_stack = 128K thread_cache_size = 8 max_connections = 20 table_cache = 128 tmp_table_size = 256M max_heap_table_size = 256M join_buffer_size = 256 KB query_cache_limit = 8M query_cache_size = 64M
Ho cercato di leggere gli articoli di tuning di MySQL, ma sembrano orientati verso le persone che sanno già cosa stanno facendo! Qualsiasi aiuto sarebbe apprezzato. Grazie!