Heim System-Tutorial LINUX Entdecken Sie neue Wege – Diagnosetool für IO-Warten

Entdecken Sie neue Wege – Diagnosetool für IO-Warten

Dec 29, 2023 pm 10:29 PM
linux linux教程 红帽 linux系统 linux命令 Linux-Zertifizierung Red Hat Linux Linux-Video

Einführung Vor kurzem habe ich eine Echtzeitsynchronisierung der Protokolle durchgeführt. Es gab jedoch keine Probleme mit der Nachrichtenwarteschlange, dem Client und dem lokalen Computer Erwarten Sie, dass das Problem nach dem Hochladen des zweiten Protokolls auftrat:
1. Frage:

Eine bestimmte Maschine im Cluster (oben) sieht eine große Last. Die Maschinen im Cluster haben die gleiche Hardwarekonfiguration und die gleiche bereitgestellte Software, aber diese eine Maschine hat ein Lastproblem. Es wird zunächst vermutet, dass es sich um eine Hardware handelt Problem.

Gleichzeitig müssen wir auch den Schuldigen für die abnormale Belastung herausfinden und dann Lösungen auf Software- und Hardwareebene finden.

另辟蹊径-诊断工具之 IO wait

2. Fehlerbehebung:

Sie können von oben sehen, dass der Lastdurchschnitt hoch, %wa hoch und %us niedrig ist:

另辟蹊径-诊断工具之 IO wait

Aus dem obigen Bild können wir grob schließen, dass IO auf einen Engpass gestoßen ist. Als nächstes können wir verwandte IO-Diagnosetools zur spezifischen Überprüfung und Fehlerbehebung verwenden.

Häufig verwendete Kombinationsmethoden sind wie folgt:
•Verwenden Sie vmstat, sar, iostat, um zu erkennen, ob es sich um einen CPU-Engpass handelt
•Verwenden Sie free und vmstat, um zu erkennen, ob ein Speicherengpass vorliegt
•Verwenden Sie iostat und dmesg, um zu erkennen, ob es sich um einen Festplatten-E/A-Engpass handelt
•Verwenden Sie netstat, um Engpässe bei der Netzwerkbandbreite zu erkennen

2.1 vmstat

Die Bedeutung des Befehls vmstat besteht darin, den Status des virtuellen Speichers („Virtual Memor Statics“) anzuzeigen, er kann jedoch auch über den Gesamtbetriebsstatus des Systems wie Prozesse, Speicher, E/A usw. berichten.

另辟蹊径-诊断工具之 IO wait
Die zugehörigen Felder werden wie folgt beschrieben:

Procs
•r: Die Anzahl der Prozesse in der Ausführungswarteschlange. Dieser Wert kann auch verwendet werden, um zu bestimmen, ob die CPU erhöht werden muss. (langfristig größer als 1)
•b: Die Anzahl der Prozesse, die auf E/A warten, d. h. die Anzahl der Prozesse im unterbrechungsfreien Ruhezustand, die die Anzahl der Aufgaben anzeigt, die ausgeführt werden und auf CPU-Ressourcen warten. Wenn dieser Wert die Anzahl der CPUs überschreitet, kommt es zu einem CPU-Engpass

Speicher
•swpd: Verwenden Sie die Größe des virtuellen Speichers. Wenn der Wert von swpd nicht 0 ist, die Werte von SI und SO jedoch für längere Zeit 0 sind, hat diese Situation keinen Einfluss auf die Systemleistung.
•frei: Freie physische Speichergröße.
•buff: Die Größe des als Puffer verwendeten Speichers.
•cache: Die als Cache verwendete Speichergröße bedeutet, dass sich viele Dateien im Cache befinden. Wenn Dateien, auf die häufig zugegriffen wird, zwischengespeichert werden können, ist die Lese-E/A-Bi der Festplatte sehr klein.

Swap (Wechselzone)
•si: Die pro Sekunde aus dem Swap-Bereich in den Speicher geschriebene Größe, die von der Festplatte in den Speicher übertragen wird.
•so: Die Speichergröße, die pro Sekunde in den Auslagerungsbereich geschrieben und vom Speicher auf die Festplatte übertragen wird.

Hinweis: Wenn der Speicher ausreichend ist, sind diese beiden Werte beide 0. Wenn diese beiden Werte über einen längeren Zeitraum größer als 0 sind, wird die Systemleistung beeinträchtigt, und die Festplatten-IO- und CPU-Ressourcen werden beeinträchtigt verzehrt werden. Einige Freunde denken, dass der Speicher nicht ausreicht, wenn sie sehen, dass der freie Speicher (frei) sehr klein oder nahe bei 0 ist. Sie können dies nicht nur betrachten, sondern auch si usw. kombinieren. Es gibt auch nur sehr wenige si usw. (Meistens ist es 0), dann machen Sie sich keine Sorgen, die Systemleistung wird zu diesem Zeitpunkt nicht beeinträchtigt.

IO (Eingabe und Ausgabe)

(Die Blockgröße der Linux-Version beträgt jetzt 1 KB)
•bi: Anzahl der pro Sekunde gelesenen Blöcke
•bo: Anzahl der pro Sekunde geschriebenen Blöcke

Hinweis: Beim Lesen und Schreiben von Zufallsdatenträgern gilt: Je größer diese beiden Werte sind (z. B. 1024 KB überschreiten), desto größer ist der Wert, an dem Sie erkennen können, dass die CPU auf E/A wartet.

System
•in: Anzahl der Interrupts pro Sekunde, einschließlich Taktinterrupts.
•cs: Anzahl der Kontextwechsel pro Sekunde.

Hinweis: Je größer die beiden oben genannten Werte sind, desto größer ist die vom Kernel verbrauchte CPU-Zeit.

CPU

(ausgedrückt als Prozentsatz)
•us: Prozentsatz der Ausführungszeit des Benutzerprozesses (Benutzerzeit). Wenn der Wert von uns relativ hoch ist, bedeutet dies, dass der Benutzerprozess viel CPU-Zeit verbraucht. Wenn die Auslastung jedoch über einen längeren Zeitraum 50 % überschreitet, sollten wir eine Optimierung oder Beschleunigung des Programmalgorithmus in Betracht ziehen.
•sy: Prozentsatz der Ausführungszeit des Kernel-Systemprozesses (Systemzeit). Wenn der Wert von sy hoch ist, bedeutet dies, dass der Systemkern viele CPU-Ressourcen verbraucht. Dies ist keine harmlose Leistung und wir sollten den Grund überprüfen.
•wa: Prozentsatz der E/A-Wartezeit. Wenn der Wert von wa hoch ist, bedeutet dies, dass die E/A-Wartezeit schwerwiegend ist. Dies kann durch eine große Anzahl zufälliger Zugriffe auf die Festplatte verursacht werden oder es liegt möglicherweise ein Engpass (Blockvorgang) auf der Festplatte vor.
•id: Prozentsatz der Leerlaufzeit

Wie Sie aus vmstat ersehen können, wird die meiste Zeit der CPU mit dem Warten auf E/A verschwendet, was durch eine große Anzahl zufälliger Festplattenzugriffe oder durch eine Festplattenbandbreite von mehr als 1024 KB verursacht werden kann, was auf einen E/A-Engpass hinweisen sollte.

2,2 Iostat

Lassen Sie uns ein professionelleres Festplatten-IO-Diagnosetool verwenden, um die relevanten Statistiken anzuzeigen.
另辟蹊径-诊断工具之 IO wait

Die zugehörigen Felder werden wie folgt beschrieben:
•rrqm/s: Die Anzahl der Merge-Lesevorgänge pro Sekunde. Das ist Delta(rmerge)/s
•wrqm/s: Die Anzahl der Merge-Schreibvorgänge pro Sekunde. Das ist Delta(wmerge)/s
•r/s: Die Anzahl der pro Sekunde abgeschlossenen Lesevorgänge vom E/A-Gerät. Das ist Delta(rio)/s
•w/s: Anzahl der pro Sekunde abgeschlossenen Schreibvorgänge auf das E/A-Gerät. Das ist Delta(wio)/s
•rsec/s: Anzahl der pro Sekunde gelesenen Sektoren. Das ist Delta(rsect)/s
•wsec/s: Anzahl der pro Sekunde geschriebenen Sektoren. Das ist Delta(wsect)/s
•rkB/s: K Bytes, die pro Sekunde gelesen werden. Ist die Hälfte von rsect/s, da jeder Sektor 512 Byte groß ist. (muss berechnet werden)
•wkB/s: Anzahl der pro Sekunde geschriebenen K-Bytes. ist die Hälfte von wsect/s. (muss berechnet werden)
•avgrq-sz: Durchschnittliche Datengröße (Sektoren) pro Geräte-E/A-Vorgang. delta(rsect+wsect)/delta(rio+wio)
•avgqu-sz: Durchschnittliche E/A-Warteschlangenlänge. Das ist delta(aveq)/s/1000 (da die Einheit von aveq Millisekunden ist).
•await: durchschnittliche Wartezeit (Millisekunden) für jeden Geräte-E/A-Vorgang. Das ist delta(ruse+wuse)/delta(rio+wio)
•svctm: Durchschnittliche Servicezeit (Millisekunden) pro Geräte-E/A-Vorgang. Das ist Delta(use)/delta(rio+wio)
•%util: Wie viel Prozent einer Sekunde werden für E/A-Vorgänge verwendet oder wie viel Sekunden lang ist die E/A-Warteschlange nicht leer. Das ist Delta(Nutzung)/s/1000 (da die Nutzungseinheit Millisekunden ist)

Sie können sehen, dass die SDB-Auslastung auf den beiden Festplatten 100 % erreicht hat und ein schwerwiegender E/A-Engpass vorliegt. Der nächste Schritt besteht darin, herauszufinden, welcher Prozess Daten auf diese Festplatte liest und schreibt.

2.3 iotop

另辟蹊径-诊断工具之 IO wait

Den iotop-Ergebnissen zufolge haben wir das Problem mit dem Flume-Prozess, der eine große Anzahl von IO-Wartezeiten verursachte, schnell lokalisiert.

Aber wie ich eingangs sagte, sind die Maschinenkonfigurationen im Cluster dieselben und die bereitgestellten Programme sind genau die gleichen wie die, die von rsync verwendet werden. Könnte es sein, dass die Festplatte kaputt ist?

Dies muss von einem Betriebs- und Wartungsstudenten überprüft werden. Die endgültige Schlussfolgerung lautet:

Sdb ist ein Dual-Disk-RAID1, die verwendete RAID-Karte ist „LSI Logic/Symbios Logic SAS1068E“ und es gibt keinen Cache. Der Druck von fast 400 IOPS hat das Hardware-Limit erreicht. Die von anderen Maschinen verwendete RAID-Karte ist „LSI Logic / Symbios Logic MegaRAID SAS 1078“, die über einen 256 MB Cache verfügt und den Hardware-Engpass nicht erreicht hat. Die Lösung besteht darin, die Maschine durch eine größere IOPS zu ersetzen zu einer Maschine mit PERC6 /i Maschinen mit integrierten RAID-Controllerkarten. Es ist zu beachten, dass die RAID-Informationen in der RAID-Karte und der Festplatten-Firmware gespeichert sind. Die RAID-Informationen auf der Festplatte und das Informationsformat auf der RAID-Karte müssen übereinstimmen. Andernfalls kann die RAID-Karte sie nicht erkennen und die Festplatte muss es sein formatiert.

IOPS hängt im Wesentlichen von der Festplatte selbst ab, aber es gibt viele Möglichkeiten, IOPS zu verbessern. Das Hinzufügen von Hardware-Cache und die Verwendung von RAID-Arrays sind gängige Methoden. Wenn es sich um ein Szenario wie DB mit hohen IOPS handelt, ist es mittlerweile beliebt, SSDs als Ersatz für herkömmliche mechanische Festplatten zu verwenden.

Aber wie bereits erwähnt, besteht unser Ziel sowohl bei der Software als auch bei der Hardware darin, herauszufinden, ob wir jeweils die kostengünstigste Lösung finden können:

Da wir nun den Hardware-Grund kennen, können wir versuchen, die Lese- und Schreibvorgänge auf eine andere Festplatte zu verschieben und dann die Auswirkung sehen:

另辟蹊径-诊断工具之 IO wait

3. Letzte Worte: Finden Sie einen anderen Weg

Tatsächlich können wir zusätzlich zur Verwendung der oben genannten professionellen Tools zur Lokalisierung dieses Problems direkt den Prozessstatus verwenden, um die relevanten Prozesse zu finden.

Wir wissen, dass der Prozess die folgenden Zustände hat:
•D ununterbrochener Schlaf (normalerweise IO)
•R läuft oder ausführbar (in der Ausführungswarteschlange)
•S unterbrechbarer Schlaf (Warten auf den Abschluss eines Ereignisses)
•T gestoppt, entweder durch ein Jobkontrollsignal oder weil es verfolgt wird.
•W-Paging (nicht gültig seit dem 2.6.xx-Kernel)
•X tot (sollte niemals gesehen werden)
•Z nicht mehr existierender („Zombie“)-Prozess, beendet, aber nicht von seinem übergeordneten Prozess geerntet.

Der Zustand von D ist im Allgemeinen der sogenannte „nicht unterbrechbare Schlaf“, der durch Warte-IO verursacht wird. Wir können von diesem Punkt aus beginnen und das Problem dann Schritt für Schritt lokalisieren:
另辟蹊径-诊断工具之 IO wait

Das obige ist der detaillierte Inhalt vonEntdecken Sie neue Wege – Diagnosetool für IO-Warten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)

Ich kann mich nicht als Stamm bei MySQL anmelden Ich kann mich nicht als Stamm bei MySQL anmelden Apr 08, 2025 pm 04:54 PM

Die Hauptgründe, warum Sie sich bei MySQL nicht als Root anmelden können, sind Berechtigungsprobleme, Konfigurationsdateifehler, Kennwort inkonsistent, Socket -Dateiprobleme oder Firewall -Interception. Die Lösung umfasst: Überprüfen Sie, ob der Parameter Bind-Address in der Konfigurationsdatei korrekt konfiguriert ist. Überprüfen Sie, ob die Root -Benutzerberechtigungen geändert oder gelöscht und zurückgesetzt wurden. Stellen Sie sicher, dass das Passwort korrekt ist, einschließlich Fall- und Sonderzeichen. Überprüfen Sie die Einstellungen und Pfade der Socket -Dateiberechtigte. Überprüfen Sie, ob die Firewall Verbindungen zum MySQL -Server blockiert.

C Sprache Bedingte Zusammenstellung: Ein detaillierter Leitfaden für Anfänger zu praktischen Anwendungen C Sprache Bedingte Zusammenstellung: Ein detaillierter Leitfaden für Anfänger zu praktischen Anwendungen Apr 04, 2025 am 10:48 AM

C-Sprachbedingungskompilation ist ein Mechanismus zum selektiven Kompilieren von Codeblöcken, die auf Kompilierungszeitbedingungen basieren. Zu den Einführungsmethoden gehören: Verwenden von #IF- und #else -Direktiven, um Codeblöcke basierend auf den Bedingungen auszuwählen. Zu den häufig verwendeten bedingten Ausdrücken gehören STDC, _win32 und Linux. Praktischer Fall: Drucken Sie verschiedene Nachrichten entsprechend dem Betriebssystem. Verwenden Sie unterschiedliche Datentypen gemäß der Anzahl der Ziffern des Systems. Verschiedene Header -Dateien werden gemäß dem Compiler unterstützt. Die bedingte Kompilierung verbessert die Portabilität und Flexibilität des Codes und macht es an den Compiler-, Betriebssystem- und CPU -Architekturänderungen anpassbar.

【Rost-Selbststudie】 Einführung 【Rost-Selbststudie】 Einführung Apr 04, 2025 am 08:03 AM

1.0.1 Vorwort Dieses Projekt (einschließlich Code und Kommentare) wurde während meines Autodidakt-Rostes aufgezeichnet. Es kann ungenaue oder unklare Aussagen geben. Bitte entschuldigen Sie sich. Wenn Sie davon profitieren, ist es noch besser. 1.0.2 Warum ist Rustrust zuverlässig und effizient? Rost kann C und C mit ähnlicher Leistung, aber höherer Sicherheit ersetzen, und erfordert keine häufige Neukompilation, um auf Fehler wie C und C zu prüfen. Thread-Safe (stellen Sie sicher, dass Multi-Thread-Code vor der Ausführung sicher ist). Vermeiden Sie undefiniertes Verhalten (z. B. Array aus Grenzen, nicht initialisierte Variablen oder Zugriff auf den freien Speicher). Rust bietet moderne Sprachmerkmale wie Generika

Was sind die 5 grundlegenden Komponenten von Linux? Was sind die 5 grundlegenden Komponenten von Linux? Apr 06, 2025 am 12:05 AM

Die fünf grundlegenden Komponenten von Linux sind: 1. Der Kernel, Verwaltung von Hardware -Ressourcen; 2. Die Systembibliothek, die Funktionen und Dienste bereitstellt; 3. Shell, die Schnittstelle, in der Benutzer mit dem System interagieren können; 4. Das Dateisystem, das Daten speichert und organisiert; 5. Anwendungen, die Systemressourcen verwenden, um Funktionen zu implementieren.

Wie man MySQL löst, kann nicht gestartet werden Wie man MySQL löst, kann nicht gestartet werden Apr 08, 2025 pm 02:21 PM

Es gibt viele Gründe, warum MySQL Startup fehlschlägt und durch Überprüfung des Fehlerprotokolls diagnostiziert werden kann. Zu den allgemeinen Ursachen gehören Portkonflikte (prüfen Portbelegung und Änderung der Konfiguration), Berechtigungsprobleme (Überprüfen Sie den Dienst Ausführen von Benutzerberechtigungen), Konfigurationsdateifehler (Überprüfung der Parametereinstellungen), Datenverzeichniskorruption (Wiederherstellung von Daten oder Wiederaufbautabellenraum), InnoDB-Tabellenraumprobleme (prüfen IBDATA1-Dateien), Plug-in-Ladeversagen (Überprüfen Sie Fehlerprotokolle). Wenn Sie Probleme lösen, sollten Sie sie anhand des Fehlerprotokolls analysieren, die Hauptursache des Problems finden und die Gewohnheit entwickeln, Daten regelmäßig zu unterstützen, um Probleme zu verhindern und zu lösen.

Lösungen für die von MySQL auf einer bestimmten Systemversion gemeldeten Fehler Lösungen für die von MySQL auf einer bestimmten Systemversion gemeldeten Fehler Apr 08, 2025 am 11:54 AM

Die Lösung für den MySQL -Installationsfehler ist: 1. Überprüfen Sie die Systemumgebung sorgfältig, um sicherzustellen, dass die Anforderungen der MySQL -Abhängigkeitsbibliothek erfüllt werden. Unterschiedliche Betriebssysteme und Versionsanforderungen sind unterschiedlich. 2. Lesen Sie die Fehlermeldung sorgfältig durch und ergreifen Sie entsprechende Maßnahmen gemäß den Eingabeaufforderungen (z. B. fehlende Bibliotheksdateien oder unzureichende Berechtigungen), z. B. die Installation von Abhängigkeiten oder die Verwendung von SUDO -Befehlen; 3. Versuchen Sie bei Bedarf, den Quellcode zu installieren und das Kompilierungsprotokoll sorgfältig zu überprüfen. Dies erfordert jedoch eine bestimmte Menge an Linux -Kenntnissen und -erfahrung. Der Schlüssel zur letztendlichen Lösung des Problems besteht darin, die Systemumgebung und Fehlerinformationen sorgfältig zu überprüfen und auf die offiziellen Dokumente zu verweisen.

Kann MySQL auf Android laufen? Kann MySQL auf Android laufen? Apr 08, 2025 pm 05:03 PM

MySQL kann nicht direkt auf Android ausgeführt werden, kann jedoch indirekt mit den folgenden Methoden implementiert werden: Die Verwendung der Leichtgewichtsdatenbank SQLite, die auf dem Android -System basiert, benötigt keinen separaten Server und verfügt über eine kleine Ressourcennutzung, die für Anwendungen für Mobilgeräte sehr geeignet ist. Stellen Sie sich remote eine Verbindung zum MySQL -Server her und stellen Sie über das Netzwerk zum Lesen und Schreiben von Daten über das Netzwerk eine Verbindung zur MySQL -Datenbank auf dem Remote -Server her. Es gibt jedoch Nachteile wie starke Netzwerkabhängigkeiten, Sicherheitsprobleme und Serverkosten.

Wo ist die C -Sprachfunktionsbibliothek? Wie füge ich die C -Sprachfunktionsbibliothek hinzu? Wo ist die C -Sprachfunktionsbibliothek? Wie füge ich die C -Sprachfunktionsbibliothek hinzu? Apr 03, 2025 pm 11:39 PM

Die C -Sprachfunktionsbibliothek ist eine Toolbox mit verschiedenen Funktionen, die in verschiedenen Bibliotheksdateien organisiert sind. Durch das Hinzufügen einer Bibliothek muss sie über die Befehlszeilenoptionen des Compiler angeben. Der GCC -Compiler verwendet beispielsweise die Option -L -Option, gefolgt von der Abkürzung des Bibliotheksnamens. Wenn sich die Bibliotheksdatei nicht unter dem Standard -Suchpfad befindet, müssen Sie die Option -L verwenden, um den Bibliotheksdateipfad anzugeben. Die Bibliothek kann in statische Bibliotheken und dynamische Bibliotheken unterteilt werden. Statische Bibliotheken sind direkt mit dem Programm zur Kompilierung verbunden, während dynamische Bibliotheken zur Laufzeit geladen werden.

See all articles