PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Web- und MySQL-Server auf zwei Maschinen



matthias1306
26.10.05, 14:29
Hallo,
ich habe zwei Server, je mit einem Athlon XP 3000+ mit 1 GB Ram. Auf dem einen läuft Apache mit PHP, auf dem anderen MySQL. Davor hatte ich alles auf einem Server, aber da dieser dann zu oft überlastet wurde, bin ich auf diese 2-Server-Variante umgestiegen.
Nun, das Problem ist, dass ich seit dieser Umstellung eine enorm hohe Ladezeit habe, die nach meinen Beobachtungen mit der Zeit zusammenhängt, die der MySQL-Server für die Anfragen braucht (reine Textseiten oder Bilder gehen ruck zuck). Die Server sind über eine 100 MBit-Leitung verbunden, die jedoch nie komplett ausgelastet ist.
Der MySQL-Server ist mit der Beispielkonfigurationsdatei für "very large systems" konfiguriert (1 - 2 GB Ram, hauptsächlich MySQL-Server).
Kann mir jemand helfen, wie ich den Server beschleunigen kann? Wäre für jede Hilfe dankbar!

Gruß, Matthias

marce
26.10.05, 14:49
Version, config, Netztopologie, Zugriffsmethode -> Infos?

temir
26.10.05, 17:12
Möchte wetten, dass MySQL beim Start etliche Warnungen ins Log schreibt...

matthias1306
26.10.05, 17:38
Nein, sind keine Fehlermeldungen im Log.
Version ist 4.1.13. Die Server hängen beide am selben Switch und sind über dieses ans Netz angeschlossen. Verbindung über TCP/IP.

Das ist die my.cnf:

[mysqld]
max_connections = 400
port = 3306
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 32M
thread_concurrency = 2
collation_server = latin1_german2_ci

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

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

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

[mysqlhotcopy]
interactive-timeout

temir
26.10.05, 17:42
Ich meinte das Log von mysqld (falls welches geschrieben wird);
für 1 GB Realmemory ist der Mysql-Server überdimensioniert konfiguriert.
Für Monitoring wäre der MySQL Administrator zu empfehlen
(auch beim Connect zu remote-Server zeigt die Speicherauslastung an).

matthias1306
26.10.05, 17:55
Meinst du nicht die /var/lib/mysql/#hostname#.err?

Hmm, kannst du mir sagen, welche Werte zu groß sind?

temir
26.10.05, 21:16
In dem konkreten Fall die Anzahl der Connections. Falls mysql ausschliesslich
von der Anwendung angesprochen wird + 2-4 für Administration ~ 20 sollten reichen.
Was Performance angeht: mysql hatte mal 'Probleme' mit dem name-resolve
(sehr lange Antwortzeiten), - dafür empfiehlt sich "skip-name-resolve" und
eine IP statt Namen in die Berechtigungstabelle ein. Wenn nur MyISAM-tables
verwendet werden: - "skip-bdb", "skip-innodb" (kann sich 4.0 -> 4.1 geändert haben)
- spart Speicher. Und Mysql Administartor entweder local oder remote starten
und beim Anwendungs-Lauf beobachten. Vielleicht sollen die net-buffer höher
gesetzt werden etc...etc.
Wenn es eine 10 GB-DB sein sollte - es gibt kernel-boot Parameter, die einem
DB-Server besser tun (da war was mit 'elevator' usw...).

PS: /var/log/mysql/mysqld.log (wie gesagt, wenn eingerichtet)
PPS: läuft X auf den Servern?

matthias1306
27.10.05, 12:59
Hallo,
danke für die Antwort! Das max_connectons war der einzigste Parameter, den ich selbst gesetzt habe :ugly: und zwar deshalb, weil auf dem Standardwert 100 ständig PHP-Fehlermeldungen kommen von wegen "Too many connections", obwohl die Verbindung jedesmal schön ordentlich geschlossen wird. :( Das andere werd ich mal ausprobieren.

matthias1306
28.10.05, 20:58
Hmm, es lag wohl daran, dass ich vor Urzeiten mal in PHP mit persistenten Verbindungen gearbeitet habe und irgendwie war das "p" vor dem connect noch immer drin :ugly:
Werd das jetzt mal ein bissel beobachten, hoffentlich wars das, wenn nicht, melde ich mich nochmal :D

matthias1306
02.11.05, 11:04
Hmm, es ist jetzt zwar besser geworden, aber besonders nachmittags / abends hängt der MySQL-Server wieder arg... Laut top liegt die CPU-Belastung von mysqld bei etwa 97%, wogegen ja auch nichts einzuwenden ist, er soll ruhig alle Ressourcen verwenden, aber bitte auch sinnvoll :rolleyes:
Die skip-Einträge sind drin, die Datenbank hat eine Größe von 1,2 GB.

Ist die Logdatei, die du meinst, die, die man über --log angibt? In der sind keine Fehler drin. X läuft meines Wissens nicht.

Hat irgendjemand noch ne Idee, das zu verbessern?