Zeigen Sie die Festplatten-E/A in Linux an und finden Sie die Prozesse heraus, die viel Lese- und Schreib-E/A beanspruchen

Zeigen Sie die Festplatten-E/A in Linux an und finden Sie die Prozesse heraus, die viel Lese- und Schreib-E/A beanspruchen

Hintergrund - Online Alert

Ein Online-Server hat einen Alarm ausgelöst und die Festplattenauslastung disk.util > 90, und der Alarm wurde weiterhin angezeigt.

Nachdem ich mich beim Server angemeldet hatte, habe ich mit iostat -x 1 10 die relevanten Informationen zur Festplattennutzung angezeigt. Die entsprechenden Screenshots sind wie folgt:

 # Wenn kein iostat-Befehl vorhanden ist, verwenden Sie yum install sysstat, um ihn zu installieren. # iostat -x 1 10 

Wie aus der obigen Abbildung ersichtlich, liegt der %util[IO] der VDB-Festplatte aufgrund häufigen Datenlesens bei fast 100 %.

Andere Feldbeschreibungen

Gerät: Gerätename
TPS: Die Anzahl der IO-Lese- und Schreibanforderungen pro Sekunde. Mehrere logische Anforderungen können zu einer einzigen I/O-Anforderung an das Gerät kombiniert werden.
Blk_read/s (kB_read/s, MB_read/s): Die Menge der vom Gerät gelesenen Daten, ausgedrückt in Blöcken (Kilobyte, Megabyte) pro Sekunde. Ein Block entspricht einem Sektor, die Blockgröße beträgt also 512 Byte.
Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s): Die Menge der auf das Gerät geschriebenen Daten, ausgedrückt in Blöcken (Kilobyte, Megabyte) pro Sekunde. Ein Block entspricht einem Sektor, die Blockgröße beträgt also 512 Byte.
Blk_read (kB_read, MB_read): Gesamtzahl der gelesenen Blöcke (Kilobyte, Megabyte).
Blk_wrtn (kB_wrtn, MB_wrtn): Gesamtzahl der geschriebenen Blöcke (Kilobyte, Megabyte).

rrqm/s: Die Anzahl der pro Sekunde mit dem Gerät zusammengeführten Leseanforderungen. Das heißt, delta(rmerge)/s
wrqm/s: Die Anzahl der pro Sekunde mit dem Gerät zusammengeführten Schreibanforderungen. Das heißt, delta(wmerge)/s
r/s: Die Anzahl der pro Sekunde abgeschlossenen Lesevorgänge des E/A-Geräts. Das ist delta(rio)/s
w/s: Die Anzahl der pro Sekunde abgeschlossenen Schreibvorgänge von E/A-Geräten. Das heißt, delta(wio)/s
rsec/s (rkB/s, rMB/s): Die Anzahl der Sektoren, die pro Sekunde vom Gerät gelesen werden (Kilobyte, Megabyte). Jede Sektorgröße beträgt 512 Bytes
wsec/s (wkB/s, wMB/s): Die Anzahl der Sektoren, die pro Sekunde auf das Gerät geschrieben werden (Kilobyte, Megabyte). Jede Sektorgröße beträgt 512 Bytes

avgrq-sz: Die durchschnittliche Datenmenge pro Geräte-E/A-Vorgang (in Sektoren). Das heißt, delta(rsec+wsec)/delta(rio+wio)
avgqu-sz: Durchschnittliche Länge der E/A-Warteschlange, die jedes Mal an das Gerät gesendet wird.
warten: Die durchschnittliche Wartezeit für jede IO-Anforderung. (inkl. Wartezeit und Verarbeitungszeit in Millisekunden)
r_await: Durchschnittliche Wartezeit für jede IO-Leseanforderung. (inkl. Wartezeit und Verarbeitungszeit in Millisekunden)
w_await: Durchschnittliche Wartezeit für jede IO-Schreibanforderung. (inkl. Wartezeit und Verarbeitungszeit in Millisekunden)
svctm: Durchschnittliche Verarbeitungszeit (in Millisekunden) für jeden Geräte-E/A-Vorgang. warnen! Vertrauen Sie dem Wert dieses Feldes nicht mehr; dieses Feld wird in einer zukünftigen Version von sysstat entfernt.
%util: Wie viel Prozent einer Sekunde werden für E/A-Vorgänge verwendet oder wie viel Zeit pro Sekunde ist die E/A-Warteschlange nicht leer? Wenn sich dieser Wert 100 % nähert, tritt eine Gerätesättigung ein.

Suchen Sie den Prozess mit hoher IO-Auslastung

Über den iotop-Befehl

Wenn der Befehl nicht verfügbar ist, installieren Sie ihn mit dem Befehl „yum install iotop“.

# iotop -oP

Mit diesem Befehl können Sie detailliertere Informationen anzeigen, z. B. Prozessnummer, Festplattenlesevolumen, Festplattenschreibvolumen, IO-Prozentsatz und die beteiligten Befehle. „Beide Grep-Befehle verursachen große IO-Lesevolumina.“

Über den Befehl pidstat

# Bedeutung des Befehls: E/A-Statistiken anzeigen, jede Sekunde aktualisiert # pidstat -d 1 

Es ist ersichtlich, dass der Grep-Befehl eine große Menge an Lese-E/A belegt. Anschließend können Sie die relevanten Prozessinformationen basierend auf der PID anzeigen.

Hinweis: Die PID in dieser Abbildung unterscheidet sich von der in der vorherigen Abbildung, da der Prozess in der vorherigen Abbildung ausgeführt wurde und diese Abbildung der nach der Ausführung generierte Prozess ist [beide führen dasselbe Skript aus].

Zusammenfassen

Oben habe ich Ihnen gezeigt, wie Sie die Festplatten-E/A in Linux überprüfen und die Prozesse finden, die viel Lese- und Schreib-E/A beanspruchen. Ich hoffe, es wird Ihnen helfen!

Das könnte Sie auch interessieren:
  • Linux IO-Multiplexing Epoll-Netzwerkprogrammierung
  • Detaillierte Erklärung des Linux-Befehls iostat
  • Der Unterschied zwischen Level-Triggerung und Edge-Triggerung von Linux IO
  • Interessante Erklärung des Socket IO-Modells von Linux
  • Diskussion über Details der IO-, Bedingungs- und Schleifenverarbeitung in der Linux-Shell-Programmierung
  • So verwenden Sie iostat zum Anzeigen der IO-Leistung von Linux-Festplatten
  • Eine detaillierte Einführung in Linux IO

<<:  JavaScript zur Implementierung der Webversion des Gobang-Spiels

>>:  Detaillierte Erklärung der MySQL 30-Militärregeln

Artikel empfehlen

Einführung in die Docker-Architektur

Docker umfasst drei grundlegende Konzepte: Image:...

Zusammenfassung der häufigsten Fehler im Webdesign

Bei der Gestaltung einer Webseite passieren Desig...

Eine kurze Analyse der parallelen WriteSet-Replikation von MySQL

【Historischer Hintergrund】 Ich arbeite seit drei ...

MySql-Anmeldekennwort vergessen und Lösung für vergessenes Kennwort

Methode 1: MySQL bietet einen Befehlszeilenparame...

Neue Blockbereichsfunktion von JavaScript ES

Inhaltsverzeichnis 1. Was ist Blockbereich? 2. Wa...

Was sind HTML-Inline-Elemente und Block-Level-Elemente und ihre Unterschiede

Ich erinnere mich an eine Frage, die der Intervie...

MySQL Deep Paging (wie man schnell Millionen von Daten paginiert)

Inhaltsverzeichnis Vorwort Fall Optimierung Zusam...

Zwei Abfragemethoden, wenn der MySQL-Abfragefeldtyp JSON ist

Die Tabellenstruktur ist wie folgt: Ich würde var...

Wie oft werden mehrere setStates in React aufgerufen?

Inhaltsverzeichnis 1. Zwei setState, wie oft soll...

HTML (CSS-Stilspezifikation) muss lauten

CSS-Stilspezifikationen 1. Klassenauswahl 2. Tag-...