PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vServer vs. MySQL IO-Last



ledy
19.04.12, 09:55
Hallo,

mein vServer hätte die Möglichkeit, 4GB RAM (garantiert) und 2GB (flex) zu nutzen. Leider kommt er nicht dazu, weil immer schon die IO-Last das System ausbremst. Wirklich "lastig" ist auf dem System nur der MySQL-Server.
Hier möchte ich mal unterstellen, dass die Indizes in den Tabellen korrekt gesetzt sind und auch die SQL Queries sich nicht weiter optimieren lassen. Blockaden zwischen verschiedenen Prozessen gibt es keine.
Je nach Notwendigkeit nutze ich sowohl MyISAM als auch innoDB.

(Mit genau denselben Daten lies ich nun für 2 Tage testweise auf einem 512MB RAM vServer eines anderen Hosters die selben Scripte laufen und das dortige System scheint kein Problem damit zu haben. Nichtsdestotrotz kann ich an der Leistungskraft der Festplatten meines anderen Hosters nichts verbessern.)

Jetzt suche ich (bisher vergeblich) nach Optimierungsmöglichkeiten mit Hilfe der my.conf, um die IO-Last zu minimieren und bevorzugt auf den RAM auszuweichen. Dieser bleibt momentan fast dauerhaft ungenutzt bzw. habe ich laut free eine Auslastung von 1,3GB bei 4GB verfügbarem Arbeitsspeicher.

Habt ihr einen Linktipp für mich oder fallen Euch spontan Tipps dazu ein?

DANKE und Gruß

marce
19.04.12, 10:37
tuning-primer.sh und mysqltuner.pl - mit Google sollten die aktuellen Downloadlinks leicht zu finden sein.

Viel hängt natürlich auch von der Größe der DB ab - und der Art der Daten da drin. Evtl. kannst Du die ja komplett auf eine Ramdisc auslagern - mit all den bekannten Konsequenzen.

nopes
19.04.12, 14:08
neben den genannten kann auch dies hier den Speicher besser nutzen:
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
Ansonsten die üblichen buzzwords bzgl. my.conf:

key_buffer_size
sort_buffer
read_buffer
table_cache
innodb_buffer_pool_size

Btw, du hast aber schon ne 64biter Version drauf? Sonst ist bei 2gb vorbei.

ledy
19.04.12, 15:56
/opt/mysqltuner.pl

>> MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[OK] Logged in using credentials from debian maintenance account.

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.1.41-3ubuntu12.10-log
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 940M (Tables: 25)
[--] Data in InnoDB tables: 156M (Tables: 50)
[!!] Total fragmented tables: 50

-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 48d 19h 1m 57s (38M q [9.038 qps], 10K conn, TX: 2B, RX: 11B)
[--] Reads / Writes: 0% / 100%
[--] Total buffers: 1.9G global + 18.4M per thread (151 max threads)
[!!] Maximum possible memory usage: 4.6G (114% of installed RAM)
[OK] Slow queries: 2% (1M/38M)
[OK] Highest usage of available connections: 6% (10/151)
[OK] Key buffer size / total MyISAM indexes: 512.0M/305.4M
[OK] Key buffer hit rate: 100.0% (1B cached / 229K reads)
[OK] Query cache efficiency: 88.4% (1M cached / 2M selects)
[!!] Query cache prunes per day: 202
[OK] Sorts requiring temporary tables: 7% (1K temp sorts / 15K sorts)
[OK] Temporary tables created on disk: 1% (1K on disk / 89K total)
[OK] Thread cache hit rate: 99% (19 created / 10K connections)
[!!] Table cache hit rate: 5% (31 open / 550 opened)
[OK] Open file limit used: 0% (31/4K)
[OK] Table locks acquired immediately: 99% (36M immediate / 36M locks)
[!!] Connections aborted: 12%
[OK] InnoDB data size / buffer pool: 156.8M/1.0G

-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Reduce your overall MySQL memory footprint for system stability
Increase table_cache gradually to avoid file descriptor limits
Your applications are not closing MySQL connections properly
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_size (> 128M)
table_cache (> 2048)



>>[!!] Total fragmented tables: 50
OPTIMIZE TABLE und auch REPAIR hat nichts gebracht. Die Tabellen haben keinen Überhang.

>>[!!] Maximum possible memory usage: 4.6G (114% of installed RAM)
OK, jetzt hab ich die buffer etc. zu weit hochgeschraubt.

Nichtsdestotrotz erfolglos :-(


In den Memory will ich die kompletten Tabellen nicht schieben. Trotz aller Vorteile wäre dann wohl die maximale Größe durch den Arbeitsspeicher beschränkt.

ledy
25.04.12, 08:38
Kein Tipp (außer memtables)?

marce
25.04.12, 08:41
die Ausgabe von tuning-primer wäre noch nett - ansonsten sind dort doch ein paar Dinge angegeben (die mit dem !! drin) - da kannst Du schon mal dran drehen...