Lokalisierung und Lösung des Problems einer hohen Datenbank-CPU

Wenn Geschäftsdienste Funktionen bereitstellen, stoßen wir häufig auf das Problem einer hohen CPU-Auslastung. Bei solchen Problemen handelt es sich in den meisten Fällen nicht um Probleme mit der Datenbank selbst, sondern werden durch unsachgemäße Verwendung verursacht. Hier finden Sie eine Aufzeichnung, wie Geschäftsdienste das Problem lokalisieren hohe CPU in der Datenbank und erklären Gemeinsame Lösungen werden angegeben.

Analyse der Hauptursachen für den Anstieg der CPU-Auslastung

Bevor wir die Grundursache für den Anstieg der CPU-Auslastung analysieren, stellen wir zunächst die CPU-Auslastungsformel vor:

单位时间 CPU 资源 = 查询执行的平均成本 x 单位时间执行的查询数量  

Es ist ersichtlich, dass die CPU-Nutzung linear mit den [durchschnittlichen Kosten der Abfrageausführung] und der [Anzahl der pro Zeiteinheit ausgeführten Abfragen] zusammenhängt. Diese beiden Elemente werden oft als langsames SQL und Datenbank-QPS bezeichnet.
Daher lässt sich der Anstieg der CPU-Auslastung wie folgt zusammenfassen:
(1) Eine große Menge an langsamem SQL beansprucht CPU-Ressourcen und beeinträchtigt die Datenbank. Diese Art von langsamem SQL äußert sich häufig in der Menge der abgefragten Daten ist zu groß, vollständiger Tabellenscan, Lock-Preemption oder sogar Deadlock, komplexe Abfragen usw.
(2) QPS ist zu hoch, was im Wesentlichen bedeutet, dass der von der Datenbank übertragene Datenverkehr zu groß ist.

Lokalisierung und Lösung des Problems übermäßiger QPS

Wenn Sie beurteilen möchten, ob der CPU-Anstieg durch zu hohe QPS verursacht wird, überprüfen Sie am besten, ob die QPS-Kurve und die CPU-Kurve konsistent sind. Wenn die QPS-Kurve grundsätzlich mit der CPU-Kurve übereinstimmt, kann dies der Fall sein kam zu dem Schluss, dass der CPU-Anstieg auf übermäßige QPS zurückzuführen sein muss. Ein Beispiel ist wie folgt:
Bitte fügen Sie eine Bildbeschreibung hinzu
Bitte fügen Sie eine Bildbeschreibung hinzu
Der nächste Schritt besteht darin, zu bestätigen, welcher SQL QPS zu hoch ist. Für die MySQL-Datenbank können Sie sich als Root-Benutzer bei der Datenbank anmelden und dann den Befehl „SHOW PROCESSLIST“ ausführen, um sie anzuzeigen.
Bitte fügen Sie eine Bildbeschreibung hinzu
Nach der Bestimmung des Hochfrequenz-SQL besteht der nächste Schritt darin, das Unternehmen zu analysieren, zu bestätigen, warum so häufige Aufrufe ausgeführt werden, und einen Optimierungsplan bereitzustellen.
(1) Verwenden Sie Stapeloperationen, um mehrere Vorgänge in einer Anforderung zu kombinieren. Bei dieser Methode müssen Sie jedoch berücksichtigen, ob die Daten gleichzeitig gestapelt werden können, um langsames SQL zu vermeiden.
(2) Versuchen Sie, häufig verwendete Abfrageergebnisse aus dem Cache abzurufen, um den Lese- und Schreibdruck auf die Datenbank zu verringern.
(3) Abfragen so weit wie möglich optimieren, die Kosten für die Abfrageausführung reduzieren (logische E/A, Anzahl der Tabellendatenzeilen, auf die zur Ausführung zugegriffen werden muss) und die Skalierbarkeit der Anwendung verbessern.
(4) Archivieren Sie regelmäßig historische Daten und verwenden Sie Unterdatenbanken, Tabellen oder Partitionen, um die Datenmenge zu reduzieren, auf die Abfragen zugreifen.
(5) Fügen Sie schreibgeschützte Instanzen hinzu und übertragen Sie Abfragen, die nicht auf die Datenkonsistenz achten (z. B. Produktkategorieabfragen und Zugnummernabfragen), zu schreibgeschützten Instanzen, um den Druck auf die Hauptinstanz zu verteilen. (Lese- und Schreibtrennung)
(6) Instanzspezifikationen aktualisieren und CPU-Ressourcen erhöhen. (Bestätigen Sie zunächst, dass die Ressourcen nicht ausreichen, und erwägen Sie dann eine Erweiterung der Ressourcen.)

Langsame SQL-Probleme finden und lösen

Unter normalen Umständen stellt die Datenbank langsame Abfrageprotokolle bereit, sodass Sie die langsame SQL-Schnittstelle nur anhand der langsamen Abfrageprotokolle ermitteln müssen. Am Beispiel von MySQL können Sie sich als Root-Benutzer bei der Datenbank anmelden und den Befehl SHOW VARIABLES LIKE 'SLOW_QUERY_LOG%' ausführen, um den Pfad des langsamen Protokolls anzuzeigen .
Bitte fügen Sie eine Bildbeschreibung hinzu
Nachdem Sie das langsame Abfrageprotokoll unter dem angegebenen Pfad abgerufen haben, besteht der nächste Schritt darin, das langsame Protokoll zu analysieren und das langsame SQL zu bestätigen.
Bitte fügen Sie eine Bildbeschreibung hinzu
Bei der Analyse des langsamen Abfrageprotokolls wurde festgestellt, dass die Ausführungszeit einer SQL-Anweisung 2 Sekunden überschritt. Wenn Sie die Erklärung weiter verwenden, um den Ausführungsplan anzuzeigen, stellen Sie fest, dass die Ausführungszeit tatsächlich sehr lang ist.
Nachdem die langsame SQL identifiziert wurde, besteht der nächste Schritt darin, die SQL zu analysieren und den Optimierungsplan festzulegen. Informationen zur Optimierung der Datenbankzugriffsleistung finden Sie im vorherigen Artikel des Autors . Hier sind die gängigen Verarbeitungsmethoden:
(1) Reduzieren Sie den Datenzugriff. Überprüfen Sie, ob der Index verwendet wird. Wenn nicht, prüfen Sie, ob der Index ergänzt werden kann. Wenn ein Index verwendet wurde, bestätigen Sie, ob der Index gültig oder ungültig ist.
(2) Reduzieren Sie die zurückgegebenen Daten. Wenn Paging nicht verwendet wird, bestätigen Sie, ob Paging verwendet werden kann. Wenn die zurückgegebenen Felder große Felder oder Felder enthalten, bestätigen Sie, ob sie in Tabellen unterteilt werden können, oder geben Sie nur die Felder zurück, die verwendet werden müssen.
(3) Reduzieren Sie die Anzahl der Interaktionen. Prüfen Sie, ob Batch-Vorgänge eingeführt oder die Größe einzelner Abrufdaten erhöht werden kann.
(4) Reduzieren Sie den CPU-Overhead der Datenbank. Bestätigen Sie bei einer großen Anzahl von Berechnungen, ob diese zur Ausführung an den Client übertragen werden können. Bestätigen Sie für das Sortierszenario, ob Raum für Optimierung besteht.
(5) Für Szenarien, in denen mehr gelesen und weniger geschrieben wird, sollten Sie die Verwendung eines Designs in Betracht ziehen, das Lesen und Schreiben trennt.
(6) Aktualisieren Sie die Ressourcenkonfiguration der Maschine. Überlegen Sie, ob die Maschine selbst eine geringe Leistung aufweist und nicht den Geschäftsanforderungen entspricht.

Zusammenfassen

In diesem Artikel werden der Ort und die Lösung des Problems einer hohen Datenbank-CPU vorgestellt, wobei der Schwerpunkt auf der Beurteilung von langsamem SQL und hohem QPS liegt. Es ist zu beachten, dass der oben genannte Inhalt vom Autor auf der Grundlage von Erkenntnissen im Internet zusammengestellt wurde und der Autor nicht über viel praktische Erfahrung in diesem Bereich verfügt. Die oben genannten Ideen und Lösungen für das Positionierungsproblem sind jedoch von Referenzwert. Der Autor verwendet beispielsweise den Cache zur Reduzierung der Anzahl der Lese- und Schreibvorgänge in der Datenbank, Batch-Vorgänge und Aktualisierungen der Maschinenressourcenkonfiguration.

Referenz

https://www.cnblogs.com/jyc123/p/16498247.html Datenbank-CPU-Auslastung 100 % Hinweise zur Fehlerbehebung
https://blog.csdn.net/yw804909465/article/details/106445902 Lokalisierung und Optimierung von Problemen mit hoher CPU in der MySQL-Datenbank
https ://www.cnblogs.com/wyy123/p/9258513.html Gründe und Lösungen für hohe MySQL-CPU-Auslastung
https://www.modb.pro/db/31741 Mysql QPS übermäßige Problembehandlung
https:// www.cnblogs. com/wyy123/p/9258513.html Gründe und Lösungen für eine hohe MySQL-CPU-Auslastung

Acho que você gosta

Origin blog.csdn.net/wangxufa/article/details/132562597
Recomendado
Clasificación