2010-11-25 8 views
2

Mein Mysql-Server ist stark ausgelastet, jetzt 300 qps Durchschnitt.Mysql Senkung der CPU-Auslastung durch Pufferung

Es verwendet% 50 CPU im Durchschnitt und nur 700 MB RAM. Mein Server hat 8 GB und es hat mehr als 3 GB frei. Das langsame Abfrageprotokoll scheint in Ordnung zu sein. Es gibt sehr wenige und nicht häufige.

Ich möchte sicher sein, dass es die zwischengespeicherten Ergebnisse zurückgibt und die Festplatte nicht unnötig berühren.

Ich denke, das Linux-Betriebssystem speichert die innodb-Datei, aber kann ich darauf vertrauen? Und gibt es eine gute Praxis, CPU-Nutzung durch Pufferung oder Zwischenspeicherung zu senken?

innodb_buffer_pool_size wird auf den Standardwert gesetzt. (8mb)

Ich habe Innodb, MyIsam und Speicher Tabellen gemischt.

Hier ist ein Ausgangssignal von einem Tuner Skript

INNODB STATUS 
Current InnoDB index space = 238 M 
Current InnoDB data space = 294 M 
Current InnoDB buffer pool free = 0 % 
Current innodb_buffer_pool_size = 8 M 

KEY BUFFER 
Current MyISAM index space = 113 M 
Current key_buffer_size = 192 M 
Key cache miss rate is 1 : 63 
Key buffer free ratio = 74 % 
Your key_buffer_size seems to be fine 

QUERY CACHE 
Query cache is enabled 
Current query_cache_size = 256 M 
Current query_cache_used = 19 M 
Current query_cache_limit = 1 M 
Current Query cache Memory fill ratio = 7.64 % 
Current query_cache_min_res_unit = 4 K 
Query Cache is 28 % fragmented 

Antwort

1

Da Sie 3GB frei haben, steigern Sie Ihre innodb_buffer_pool_size Ihre gesamte innodb Datensatz (Daten + Index) zu halten.

Geben Sie ihm eine 1G, damit es etwas Luft zum Atmen hat. Du wirst es nicht bereuen. :)

+0

Ich tat wie du gesagt hast. Wir werden die Auswirkungen während der Hauptverkehrszeit sehen :) Aber es gibt "innodb_flush_method = O_DIRECT" übrig. Ich werde es später testen. – faraklit