Heim Datenbank MySQL-Tutorial MySQL-Slave löst Oom-Killer-Lösung_MySQL aus

MySQL-Slave löst Oom-Killer-Lösung_MySQL aus

Aug 20, 2016 am 08:48 AM
mysql

In letzter Zeit erhalte ich häufig Alarmmeldungen wie „Nicht genügend Speicher in MySQL-Instanzen“. Wenn ich mich beim Server anmelde, stelle ich fest, dass MySQL 99 % des Speichers verbraucht hat.

Manchmal, wenn es nicht rechtzeitig verarbeitet wird, startet der Kernel MySQL für uns neu und dann können wir sehen, dass die dmesg-Informationen die folgenden Datensätze enthalten:

9. März 11:29:16 xxxxxx Kernel: mysqld hat oom-killer aufgerufen: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
9. März 11:29:16 xxxxxx Kernel: mysqld cpuset=/ mems_allowed=0
9. März 11:29:16 xxxxxx Kernel: Pid: 99275, Komm: mysqld Nicht tainted 2.6.32-431.el6.x86_64 #1
9. März 11:29:16 xxxxxx Kernel: Call Trace:

Beschreiben Sie nun die konkrete Szene:

Hauptvoraussetzung: Betriebssystem und MySQL-Version:

Betriebssystem: CentOS-Version 6.5 (endgültig) Kernel: 2.6.32-431.el6.x86_64 (physische Maschine)
MySQL: Percona 5.6.23-72.1-log (einzelne Instanz)

Trigger-Szenario: Beim Slave kommt es zu einem periodischen Speicheranstieg, unabhängig davon, ob andere Links eingehen, was den Kernel-Oom-Killer auslöst

Es wird gesagt, dass dieses Problem seit mehr als einem Jahr auftritt. Da ich gerade hierher gekommen bin, hat mich der Chef gebeten, noch einmal nachzusehen, ob ich irgendwelche Hinweise finden kann, also werde ich mit der Überprüfung dieses Problems beginnen:

1. Ich vermutete, dass der für MySQL zugewiesene Speicher unangemessen war, also überprüfte ich die Größe von innodb_buffer_pool und die Größe des physischen Speichers und stellte fest, dass die für BP zugewiesene Größe etwa 60 % des physischen Speichers ausmacht ist nicht der Grund, und es wurde behoben. Wenn dies das Problem war, hätten sie es schon vor langer Zeit entdecken müssen~
2. Überprüfen Sie die Parameterkonfiguration des Betriebssystems. [vm.swappiness = 1 ; /proc/sys/vm/overcommit_memory ; oom_adj ] Sie können den adj-Parameter vorübergehend auf -15 oder direkt auf -17 setzen, damit der Kernel MySQL niemals beendet Das Problem kann nicht grundsätzlich gelöst werden, und es bestehen bestimmte Risiken. Wird es dazu führen, dass MySQL hängen bleibt, wenn es Speicher benötigt, diesen aber nicht zuweisen kann? Denken Sie einfach über diese Methode nach.
3. Nun, die MySQL-Initialisierungsparameter und die Betriebssystemparameter scheinen keine unangemessene Konfiguration zu haben. Dann lasst uns nach MySQL selbst suchen!

Da der MySQL-Speicher stark ansteigt, wird er durch die Speicherzuweisung verursacht? Ich werde ihn auch in meiner Umgebung ausführen, nachdem im Internet gemeldet wurde: 1. Zeichnen Sie die vom aktuellen MySQL-Prozess belegte Speichergröße auf. 3. Führen Sie die Flush-Tabellen aus. 5. Zeichnen Sie die vom MySQL-Prozess belegte Größe auf Dies dient hauptsächlich dazu, festzustellen, ob sich der von MySQL zugewiesene Speicher vor und nach der Ausführung von Flush Table offensichtlich geändert hat. Nun, es scheint, dass dieser Fehler bei mir nicht mehr besteht.

Nachdem wir uns diese Version angesehen haben, gibt es auf der offiziellen Website auch einen Fehler bezüglich des MySQL OOM, der durch falsche Einstellungen von innodb_buffer_pool_instances und innodb_buffer_pool_size verursacht wird. Die allgemeine Bedeutung ist: Wir können innodb_buffer_pool_size größer einstellen Als unser tatsächlicher physischer Speicher beträgt unser physischer Speicher beispielsweise: 64 GB, und wenn wir innodb_buffer_pool_size = 300 GB und innodb_buffer_pool_instances > 5 festlegen, können wir MySQL weiterhin aufrufen. Allerdings ist MySQL anfällig für OOM. Detaillierte Informationen: http://bugs.mysql.com/bug.php?id=79850 Schauen Sie hier vorbei.

Es gibt eine andere Situation, in der ein Fehler gemeldet wurde. Das heißt, wenn der Slave die Filterung einstellt, löst er auch OOM aus, aber diese Instanzen sind nicht festgelegt, daher werde ich dies ignorieren.

Da es nicht durch eine Überbelegung des MySQL-Speichers verursacht wird, wird es auch nicht durch das Handle der offenen Tabelle verursacht. Welche anderen Gründe gibt es also?

Lassen Sie uns noch einmal darüber nachdenken. Die Master- und Slave-Konfigurationen sind identisch. Es ist nur so, dass der Master das Produktionsgeschäft ausführt, während einige Instanzen das Abfragegeschäft ausführen. Wenn Sie überhaupt keine Aufgaben ausführen, aber trotzdem OOM starten, liegt diese Situation wahrscheinlich am Slave.

Dann habe ich ein Beispiel gefunden und es ausprobiert. Ich weiß nicht, ob ich es nicht ausprobiert habe. Ich ging nach oben und führte es aus: Stop Slave; Start Slave; dieser Befehl blieb etwa 3 Minuten lang hängen. Nach der Überprüfung der Speichernutzung wurden 20 GB+ auf einmal freigegeben. An diesem Punkt haben wir im Grunde das Problem lokalisiert, aber wir alle wissen, dass Slave zwei Threads hat. Wird es durch SQL Thread oder IO Thread verursacht? Wir müssen noch auf weitere Untersuchungen warten, wenn es das nächste Mal passiert.

Veröffentlichen Sie einige Informationen zur Speicherüberwachung:

12:00:01 Uhr kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
14:40:01 Uhr 566744 131479292 99,57 88744 618612 132384348 89,19
14:50:01 Uhr 553252 131492784 99,58 83216 615068 132406792 89,20
15:00:01 Uhr 39302700 92743336 70,24 95908 925860 132413308 89,21
15:10:01 Uhr 38906360 93139676 70,54 109264 1292908 132407836 89,21
15:20:01 Uhr 38639536 93406500 70,74 120676 1528272 132413136 89,21

Ich habe hier etwas spezifischere Dinge aufgezeichnet: https://bugs.launchpad.net/percona-server/bug/1560304 Wenn Sie nicht darauf zugreifen können, können Sie darauf zugreifen (http://www.bitsCN.com /article/ 88729.htm)

Zum Schluss noch eine kleine Zusammenfassung:

Phänomene: Sklaven-OOM
Vorübergehende Lösung: Slave neu starten
Langfristige Lösung: Nebenversions-Upgrade von MySQL Server

Für einen systematischeren Blick lesen Sie bitte, was Herr Guo geschrieben hat:
http://www.bitsCN.com/article/88726.htm
http://www.bitsCN.com/article/88727.htm

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Die einfache Datenverwaltung für Anfänger MySQL: Die einfache Datenverwaltung für Anfänger Apr 09, 2025 am 12:07 AM

MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Kann ich das Datenbankkennwort in Navicat abrufen? Kann ich das Datenbankkennwort in Navicat abrufen? Apr 08, 2025 pm 09:51 PM

Navicat selbst speichert das Datenbankkennwort nicht und kann das verschlüsselte Passwort nur abrufen. Lösung: 1. Überprüfen Sie den Passwort -Manager. 2. Überprüfen Sie Navicats "Messnot Password" -Funktion; 3.. Setzen Sie das Datenbankkennwort zurück; 4. Kontaktieren Sie den Datenbankadministrator.

So erstellen Sie Navicat Premium So erstellen Sie Navicat Premium Apr 09, 2025 am 07:09 AM

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

Wie kann ich das Datenbankkennwort in Navicat für Mariadb anzeigen? Wie kann ich das Datenbankkennwort in Navicat für Mariadb anzeigen? Apr 08, 2025 pm 09:18 PM

Navicat für MariADB kann das Datenbankkennwort nicht direkt anzeigen, da das Passwort in verschlüsselter Form gespeichert ist. Um die Datenbanksicherheit zu gewährleisten, gibt es drei Möglichkeiten, Ihr Passwort zurückzusetzen: Setzen Sie Ihr Passwort über Navicat zurück und legen Sie ein komplexes Kennwort fest. Zeigen Sie die Konfigurationsdatei an (nicht empfohlen, ein hohes Risiko). Verwenden Sie Systembefehlsleitungs -Tools (nicht empfohlen, Sie müssen die Befehlszeilen -Tools beherrschen).

So erstellen Sie eine neue Verbindung zu MySQL in Navicat So erstellen Sie eine neue Verbindung zu MySQL in Navicat Apr 09, 2025 am 07:21 AM

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

See all articles