Maximieren Sie SQL-Verbindungen + Apache-Threads

Maximieren Sie SQL-Verbindungen + Apache-Threads

Ich habe einen dedizierten Server, auf dem ich MySQL + Apache ausführe. Ich führe ein Chat-Skript aus, das alle 3 Sekunden eine Abfrage durchführt. Gestern Abend ist mein MySQL-Server aufgrund der Überlastung abgestürzt. Ich frage mich, wie ich meine MySQL-Threads sowie Apache-Threads maximieren kann.

Kann mir jemand URLs nennen, die mir dabei helfen können, dasselbe zu erreichen?

Vielen Dank für Ihre Zeit.

Antwort1

Der kanonische Ort für MySQL-Leistungsinformationen istMySQL-Performance-Blog. Es gibt auch dieLeistungsstarkes MySQLBuch von Jeremy Zawodny.

Sie möchten vielleicht eine Art Verbindungspooling in Ihrer Anwendung in Betracht ziehen, bei dem vorhandene Datenbankverbindungen wiederverwendet werden, anstatt für jede neue Sitzung eine neue Verbindung zu erstellen. Dies reduziert den Aufwand für das Öffnen einer neuen TCP-Verbindung und alle von MySQL ausgeführten Verarbeitungsvorgänge. Es sollte auch die Anzahl der inaktiven Verbindungen reduzieren, die MySQL ausführt, da jede Verbindung eine bestimmte Menge an Speicher benötigt, um zu existieren.

Eine weitere Möglichkeit, die Belastung Ihrer Datenbank erheblich zu reduzieren, ist die Integration von Memcached. Memcached ist ein verteilter Schlüssel-Wert-Speicher im Arbeitsspeicher, ähnlich einer netzwerkgebundenen Hash-Map. Sie ändern Ihre Anwendung so, dass Memcached abgefragt wird und, wenn keine Daten vorhanden sind, die Datenbank überprüft wird. Wenn Sie die Daten ändern, schreiben Sie sie in die Datenbank und machen die Daten in Memcached ungültig. Das bedeutet, dass Sie das deutlich schnellere Memcached abfragen und nicht MySQL.

Sobald Sie diese Funktionen implementiert haben (und nur dann), können Sie mit der Optimierung der MySQL-Parameter beginnen. Wenn Sie nicht wissen, was Sie tun, besteht ein großes Risiko, dass Sie alles komplett vermasseln und am Ende eine Datenbank haben, die langsamer ist als vorher. Ich würde zumindest das Buch „MySQL Performance“ lesen, bevor Sie das versuchen.

Wenn Sie mehr Geld ausgeben können, wäre die erste Verbesserung, Ihre Datenbank auf einen separaten Server aufzuteilen. Wenn das nicht ausreicht, können Sie sich eine Master- und Slave-Replikationskonfiguration ansehen, bei der Schreibvorgänge an den Master-Server gehen, Lesevorgänge jedoch zwischen Master und Slave verteilt werden. Dies funktioniert besonders gut bei leseintensiven Arbeitslasten, was recht häufig vorkommt.

verwandte Informationen