Während des Betriebs von Websites mit PHP+MYSQL-Architektur treten häufig verschiedene Leistungsprobleme auf, wie z. B. MySQL, PHP, CPU, Festplatten-IO, Cache usw. Unter diesen ist der MySQL-Engpass der häufigste und am schwierigsten zu lösende Faktor, der sich auf die Website-Leistung auswirkt. Normalerweise verwenden wir Caching-Software wie Redis und Memcached, um Inhalte zwischenzuspeichern. Dies ist jedoch eine der besten Lösungen, erfordert jedoch die Unterstützung von Website-Programmen Die meisten häufig verwendeten Website-Programme unterstützen diese Caching-Software jedoch nicht oder können sie nicht perfekt unterstützen. Heute werden wir darüber sprechen, wie die MySQL-Leistung durch MySQL-eigene Konfigurationsanpassungen optimiert werden kann, um das MySQL-Engpassproblem zu lindern.
Vorbereitung:
1. Pagoda Linux Panel offizielle Version 5.2.0+ (veröffentlicht am 20.09.2017) Beta-Version 5.2.4+
2. MySQL 5.x
Normalerweise unterteilen wir MySQL-Tuning in Folgendes: Mehrere Teile:
1. Optimierung der MySQL-Konfigurationsparameter (muss entsprechend den Betriebsbedingungen der Website angepasst werden)
2. Optimierung des Datentabellenindex (der Effekt ist offensichtlich, aber normalerweise müssen hervorragende Open-Source-Programme nicht angepasst werden )
3. SQL-Anweisungen optimieren (das machen Programmierer oder Datenbankadministratoren)
Heute sprechen wir hauptsächlich darüber, wie man MySQL-Konfigurationsparameter mit den neuen Funktionen des Pagoda-Panels optimiert.
Offensichtlich zeigt (Abbildung 1) den aktuellen Betriebsstatus von MySQL, (Abbildung 2) zeigt die wichtigsten Konfigurationsparameter von MySQL
Lassen Sie uns diese beiden Bilder interpretieren:
1 Die Anzahl der Verbindungen derzeit aktiv in (Abbildung 1) ist 1. Seit dem Start des MySQL-Dienstes beträgt die höchste Anzahl von Verbindungen 54, wenn die höchste Anzahl von Verbindungen nahe oder gleich der max_connections in (Abbildung 2) ist, max_connections sollte entsprechend erhöht werden, und es muss darauf geachtet werden. Das Wichtigste ist, nicht zu viel auf einmal zu erhöhen. Es wird empfohlen, es jedes Mal um 50 zu erhöhen und es über einen bestimmten Zeitraum zu beobachten.
2. Die Thread-Cache-Trefferquote in (Abbildung 1) beträgt 99,78 %. Es wird empfohlen, die Thread_cache_size in (Abbildung 2) entsprechend zu erhöhen Zeit.
3. Index-Trefferquote (Abbildung 1) Die Index-Trefferquote beträgt 99,50 %. Es wird empfohlen, die key_buffer_size in (Abbildung 2) entsprechend zu erhöhen Es ist zu beachten, dass Sie diese Option ignorieren können, wenn Sie die Innodb-Index-Trefferquote verwenden (Abbildung 1). Die Trefferquote des Innodb-Index beträgt 100 %. Es wird empfohlen, die innodb_buffer_pool_size in (Abbildung 2) entsprechend zu erhöhen. Es wird empfohlen, sie jedes Mal um 64 zu erhöhen. Beachten Sie, dass Sie diese Option ignorieren können, wenn Ihre Datenbank nicht die Innodb-Engine verwendet. Die Trefferquote des Abfrage-Cache ist eine relativ umstrittene Funktion. Ich persönlich empfehle, dass Sie sie verwenden, wenn Sie Caching-Software wie Redis und Memcached verwenden, um sie zu deaktivieren (Abbildung 2). Wenn Sie keine Caching-Software verwenden, zu viel Speicher beanspruchen und offensichtliche Datenbankengpässe auftreten, können Sie versuchen, den Abfrage-Cache zu aktivieren. Dies ist eine Funktion, die stark von der Datentabellenstruktur und der Optimierung der Datentabelle abhängt und SQL-Anweisungen für das Abfrage-Caching optimiert sind, ist ihre Wirkung immer noch sehr gut.
6. Temporäre Tabellen auf der Festplatte erstellen (Abbildung 1) Der Anteil der Erstellung temporärer Tabellen auf der Festplatte beträgt 0,42 %, was zeigt, dass die meisten temporären Tabellen im Speicher erstellt werden und den Festplatten-IO-Overhead nicht zu sehr erhöhen Wenn das Verhältnis größer als 2 % ist, erhöhen Sie die tmp_cache_size in (Abbildung 1) entsprechend. Es wird empfohlen, es jedes Mal um 32 zu erhöhen. Wenn der Anteil größer als 60 % ist, geben Sie nicht auf Speziell optimierte SQL-Anweisungen, sodass während des Betriebs eine große Anzahl temporärer Dateien geöffnet wird. Unabhängig davon, wie viel Cache zur Tabelle hinzugefügt wird, reicht dies nicht aus.
7. Offene Tabelle Wenn die offene Tabelle in (Abbildung 1) nahe oder gleich dem table_open_cache in (Abbildung 2) ist, können Sie table_open_cache entsprechend erhöhen. Wenn sie jedoch zu groß eingestellt ist, kann dies dazu führen, dass Ihr Programm häufig nicht mehr funktioniert Unterbrechen Sie die MySQL-Verbindung. Es wird empfohlen, innerhalb von 1024 zu liegen, und das Maximum sollte 2048 nicht überschreiten.
8. Die Anzahl der nicht verwendeten Indizes und die Anzahl der nicht indizierten JOINs. Überprüfen Sie den Index der Datentabelle, solange er nicht in die Höhe geschossen ist, z. B. um Tausende pro Tag. Dies kann im Allgemeinen ignoriert werden. Schließlich ist die Optimierung des Index immer noch ein Problem.
9. Die Anzahl der Zusammenführungen nach dem Sortieren. Wenn dieser Wert langsam ansteigt, wird empfohlen, die sort_buffer_size in (Abbildung 2) entsprechend zu erhöhen. Es wird empfohlen, ihn jedes Mal um 512 zu erhöhen, das Maximum sollte jedoch 8192 nicht überschreiten Dieser Wert ist in die Höhe geschossen und wird auch durch Erhöhen von sort_buffer_size erreicht. Wenn es nicht funktioniert, geben Sie diese Option einfach auf. Die Schuld liegt beim Programmentwickler.
10. Wenn die Server-CPU einen geringen CPU-Overhead hat und Tabellen unkontrolliert sperrt, wird empfohlen, alle Datentabellen vor der Konvertierung zu sichern.
11. Optimierungsplan Dies ist ein empfohlener Optimierungsplan basierend auf der Speichergröße. Es wird nur empfohlen, ihn für grundlegende Referenzwerte zu verwenden.
Hinweis: Nach dem Speichern der Parameterkonfiguration wird diese nicht sofort wirksam. Denken Sie daran, den MySQL-Dienst neu zu starten.