Periodische MySQL-Sperre, wenn Wordpress stark ausgelastet ist

8

Ich habe eine MySQL 5.1.61-Datenbank, die hinter zwei Load-Balanced-Apache-Webservern läuft, auf denen ziemlich ausgelastete Wordpress-Sites (100 KB pro Tag) gehostet werden. Ich cachiere mit Cloudflare, W3TC und Varnish. Die meiste Zeit behandelt der Datenbankserver den Datenverkehr sehr gut. "show full processlist" zeigt zu jeder Zeit 20-40 Abfragen an, wobei sich die meisten im Schlafzustand befinden.

In regelmäßigen Abständen (vor allem wenn Verkehrsspitzen oder eine große Anzahl von Kommentaren gelöscht werden) reagiert MySQL jedoch nicht mehr. Ich werde 1000-1500 laufende Abfragen finden, viele "sendende Daten", etc. Keine bestimmte Abfrage scheint die Datenbank zu belasten (sie sind alle Standard-Wordpress-Abfragen), aber es scheint nur so, als ob das gleichzeitige Volumen der Anfragen alle Anfragen verursacht auflegen. Ich bin (normalerweise) immer noch in der Lage, mich anzumelden, um "show full processlist" oder andere Abfragen auszuführen, aber die 1000+ Abfragen, die bereits da sind, sitzen einfach. Die einzige Lösung scheint zu sein, mysql neu zu starten (manchmal heftig über kill -9, wenn ich keine Verbindung herstellen kann).

Alle Tabellen sind innodb, Server hat 8 Kerne, 24 GB RAM, viel Speicherplatz, und das folgende ist mein my.cnf:

%Vor%

Irgendwelche Vorschläge, wie ich die MySQL-Konfiguration oder andere Schritte verbessern kann, um die Datenbankstabilität unter hoher Last zu erhalten?

    
EvilPluto 30.11.2012, 06:28
quelle

3 Antworten

1

Wie schon gesagt wurde, denken Sie über den Tellerrand hinaus und machen sich Gedanken darüber, warum diese Abfragen langsam sind oder irgendwie hängen. Ein Oldie, aber eine gute Quelle von Problemen selbst für (angeblich;) intelligente Systemingenieure ist der Lastausgleich, der Probleme über Webserver- oder Datenbanksitzungen hinweg verursacht. Mit all dem Caching und Load-Balancing, sind Sie sicher, dass alles immer End-to-End wie beabsichtigt verbindet?

    
chris 10.12.2012 06:45
quelle
1

Ich stimme mit Alditis & amp; Bjoern

Ich bin ziemlich noobish mit mysql, aber das Ausführen von mysqltuner kann einige Konfigurationsoptimierungen basierend auf den letzten Abfragen des DB Ссылка enthüllen

Und wenn möglich, speichern Sie die DB-Dateien auf einer physisch getrennten Partition vom Betriebssystem, das OS kann IO verbrauchen, was die DB verlangsamt. Wie bei Bjoerns Logrotate-Problem.

    
Lex 28.12.2012 00:34
quelle
0

Sehen Sie sich zunächst das grundsätzliche Systemverhalten bei Problemen an. Verwenden Sie sowohl vmstat als auch iostat, wenn Sie Probleme finden können. Prüfen Sie, ob das System mit dem Swapping beginnt (pi, po Spalten in vmstat) und ob viel IO auftritt. Dies ist der erste Schritt beim Debuggen Ihres Problems.

Eine weitere nützliche Informationsquelle ist SHOW INNODB STATUS. Siehe für Ссылка zur Interpretation der Ausgabe.

Es kann sein, dass Ihre Schreibvorgänge zu einem bestimmten Zeitpunkt die Lese-Performance beeinträchtigen, weil sie den Abfrage-Cache leeren.

    
JoG 31.12.2012 12:57
quelle

Tags und Links