PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Performance Probleme mit Mysql



Stolzi
13.02.08, 07:51
Hallo,
seit einiger Zeit hat mein Webserver arge performance Probleme. Das Aufrufen einer Seite dauert ewig lange. Wenn er aber zu laden beginnt, dann gehts normal schnell. Ich habe mit top heraus gefunden, dass das Problem bei mysql liegen muss, denn sobald der mysql Prozess fertig ist gehts ruck zuck. Leider habe ich keinen Ansatzpunkt wie ich auf Fehlersuche gehe.
Ich habe vor einiger Zeit versucht Arbeitsspeicher zu sparen, da bei meinem Strato "Power" Server der Arbeitsspeicher hinten und vorne nicht ausreicht, obwohl ich nicht mehr als Apache, Postfix und Mysql laufen habe.... Vielleicht habe ich da einen Fehler gemacht. Finds aber selbst nicht raus.
Da wäre mal meine /etc/my.cnf:



[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M


server-id = 1

[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout



Vielleicht sieht da jemand was? Oder hat sonst einen Tip wie ich den Fehler finde?

Danke
Stolzi

bla!zilla
13.02.08, 08:24
Lass mal das mysqltuner Skript laufen. Das Skript bekommst du hier (http://rackerhacker.com/mysqltuner/).

Stolzi
13.02.08, 08:40
Cool, danke für den Tip!
Soll ich das vorgeschlagene einfach mal so übernehmen probieren? Siehst du daran vielleicht schon warum es so elendig langsam geht?

-------- General Statistics --------------------------------------------------
[!!] Your MySQL version 4.1.10a is EOL software! Upgrade soon!
[OK] Operating on 32-bit architecture with less than 2GB RAM
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB +ISAM -NDBCluster
[--] Data in MyISAM tables: 317M (Tables: 518)
[--] Data in InnoDB tables: 32K (Tables: 2)
[!!] ISAM is enabled but isn't being used
-------- Performance Metrics -------------------------------------------------
[--] Up for: 49m 14s (13K q [4.687 qps], 655 conn, TX: 882M, RX: 1M)
[--] Reads / Writes: 99% / 1%
[--] Total buffers: 1.6M per thread and 42.0M global
[OK] Maximum possible memory usage: 197.5M (13% of installed RAM)
[OK] Slow queries: 0% (1/13K)
[OK] Highest usage of available connections: 40% (40/100)
Argument "2,22231e+09" isn't numeric in numeric eq (==) at ./mysqltuner.pl line
503, <> line 2 (#1)
(W numeric) The indicated string was fed as an argument to an operator
that expected a numeric value instead. If you're fortunate the message
will identify which operator was so unfortunate.

[OK] Key buffer size / total MyISAM indexes: 16.0M/2,22231e+09B
[OK] Key buffer hit rate: 99.7%
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 0%
[!!] Temporary tables created on disk: 100%
[!!] Thread cache is disabled
[OK] Table cache hit rate: 74%
[OK] Open file limit used: 5%
[OK] Table locks acquired immediately: 100%
[OK] InnoDB data size / buffer pool: 32.0K/8.0M
-------- Recommendations -----------------------------------------------------
General recommendations:
Add skip-isam to MySQL configuration to disable ISAM
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
Be sure that tmp_table_size/max_heap_table_size are equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Set thread_cache_size to 4 as a starting value
Variables to adjust:
query_cache_size (>= 8M)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
thread_cache_size (start at 4)

marce
13.02.08, 08:51
Generell finde ich die Caches bei Dir recht schmal bemessen - da kannst Du einiges nach oben geben, die Performance wird es Dir danken. Es sollte bei einer Suse-Installation z.B. unter /usr/share/doc/packages/mysql/cnf/ div. Beispielconfigurationen für MySQL geben für unterschiedliche Systeme, my-huge.cnf und my-big.cnf sind da recht gute Startpunkte (sollte es die Dateien bei Dir nicht geben, AFAIK sind sie auch per Google verfügbar)

Ansonsten kann die Geschwindigkeit natürlich auch noch am DB-Design und der Größe der DB selbst liegen - schau Dir das mal genauer an. Poste evtl. auch ein paar Systemdaten und -Ausgaben (top, free, ...)