Dieser Artikel ist ein Auszug aus Kapitel 13 des Buches Linux in Action, veröffentlicht von Manning.
War die Leistung Ihres Linux-Rechners unregelmäßig oder ungewöhnlich langsam? Haben Sie den Verdacht, dass die wachsende Nachfrage Ihre verfügbaren Ressourcen übersteigen könnte? Hier sind einige Fragen, die Sie sich stellen sollten:
- Wie nahe sind Sie daran, Ihre CPU- und Speicherressourcen zu erschöpfen?
- Läuft etwas unnötigerweise, das heruntergefahren werden könnte?
- Gibt es etwas, das ohne Ihr Wissen abtrünnig läuft?
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Wo sollten Sie nach Antworten suchen? Die Spitze Programm ist ein guter Ausgangspunkt. Es kann Ihnen einen reichhaltigen, sich selbst aktualisierenden Überblick über die Prozesse geben, die auf Ihrem System ausgeführt werden.
Die folgende Abbildung zeigt einen typischen Bildschirm von top
Daten. Die erste Zeile enthält die aktuelle Uhrzeit, die verstrichene Zeit seit dem letzten Systemstart, die Anzahl der derzeit angemeldeten Benutzer und die durchschnittliche Auslastung für die letzte Minute, fünf Minuten und 15 Minuten. Diese Informationen können auch durch Ausführen von uptime
zurückgegeben werden .
Da wir versuchen, Leistungsprobleme zu lösen, sind die Datenspalten, die uns am meisten interessieren sollten, %CPU
(Prozentsatz der aktuell von einem bestimmten Prozess verwendeten CPU-Kapazität) und %MEM
(Prozentsatz der Speicherkapazität). Beachten Sie besonders die Prozesse, die ganz oben in der Liste angezeigt werden.
In diesem Fall können Sie sehen, dass der MySQL-Daemon 4,3 % der CPU des Servers und, aus der nächsten Spalte, 13 % seines Arbeitsspeichers verwendet. Wenn Sie dieser Zeile nach links folgen, sehen Sie, dass die Prozess-ID (PID) 1367
ist und der Prozess ist "im Besitz" von mysql
Benutzer.
Vielleicht kommen Sie zu dem Schluss, dass dieser Prozess mehr Ressourcen in Anspruch genommen hat, als gerechtfertigt sind, und geopfert werden müssen (für das Allgemeinwohl, verstehen Sie). Dieses top
Display gab Ihnen alles, was Sie brauchen, um es zu töten. Da MySQL ein von systemd verwalteter Dienst ist (auf den Distributionen, die systemd verwenden), sollte Ihre erste Wahl die Verwendung von systemctl
sein um den Prozess sanft herunterzufahren, ohne Anwendungsdaten zu gefährden.
systemctl stop mysqld
Wenn der Prozess, den Sie herunterfahren möchten, nicht von systemd verwaltet wird oder wenn etwas schief gelaufen ist und systemctl
konnte es nicht stoppen, dann können Sie entweder kill
verwenden oder killall
um Ihren Prozess zu eliminieren. Einige Systeme erfordern die Installation von killall
als Teil des psmisc
Paket. Sie übergeben die PID an kill
so:
kill 1367
killall
verwendet dagegen den Prozessnamen statt seiner ID.
killall mysqld
Töten oder alles töten, das ist hier die Frage . Eigentlich liegt die Antwort auf der Hand. kill
beendet einen einzelnen Prozess, basierend auf der PID, während killall
tötet so viele Instanzen eines bestimmten Programms, wie ausgeführt werden. Wenn es also zwei oder drei separate MySQL-Instanzen gäbe – die vielleicht verschiedenen Benutzern gehören – würden alle gestoppt. Vor dem Start von killall
, stellen Sie sicher, dass es keine ähnlich benannten Prozesse gibt, die Sie weiterhin ausführen möchten und die zu "Kollateralschäden" werden könnten.
Natürlich müssen Sie auch systemctl disable
ausführen um sicherzustellen, dass der Prozess beim nächsten Booten nicht neu gestartet wird.
systemctl disable mysqld
Entschlüsselung oben
Falls Sie sie jemals brauchen, die dritte Zeile von top
Die Ausgabe, die Sie etwas früher gesehen haben, gibt uns Zeitwerte (in Prozent) für eine Reihe anderer CPU-Metriken. Hier ist ein kurzer Überblick über das Durcheinander von Akronymen, die Sie dort sehen werden:
Metrik | Bedeutung |
---|---|
us | Zeit, in der Prozesse mit hoher Priorität (unbearbeitet) ausgeführt werden |
sy | Zeit zum Ausführen von Kernelprozessen |
ni | Zeit für die Ausführung von (nice) Prozessen mit niedriger Priorität |
id | Im Leerlauf verbrachte Zeit |
wa | Wartezeit für den Abschluss von E/A-Ereignissen |
hi | Aufgewendete Zeit für die Verwaltung von Hardware-Interrupts |
si | Aufgewendete Zeit für die Verwaltung von Softwareunterbrechungen |
st | Zeit, die dieser VM durch ihren Hypervisor (Host) gestohlen wurde |
Die top
Anzeige kann in Echtzeit durch Tastatureingabe angepasst werden. Geben Sie h
ein um mehr zu erfahren.
Probleme verursachen (CPU-Last simulieren)
Sehnsucht nach top
in Aktion, aber wüssten Sie es nicht, alles läuft reibungslos?
Warum nicht eine CPU-Überlastung auf Krisenniveau simulieren? Ähnlich wie bei Kindern, yes
gibt kontinuierlich (digitales) Rauschen aus, bis es aufgefordert wird, aufzuhören. Bei näherem Nachdenken ist das überhaupt nicht wie Kinder.
Dieser Befehl leitet dieses Rauschen an den verfügbaren /dev/null
um Datei und &
Der Charakter wird den Prozess in den Hintergrund drängen und Ihnen die Kontrolle über die Befehlszeile zurückgeben. Um den Druck zu erhöhen, führen Sie den Befehl noch einige Male aus.
$ yes > /dev/null &
Das sollte sie beschäftigen. Während das alles läuft, schauen Sie sich top
an um zu sehen, was passiert. Sie können auch versuchen, andere Anwendungen auszuführen, um zu sehen, wie viel Zeit benötigt wird, um sie zu verlangsamen. Wenn Sie fertig sind, führen Sie killall
aus um alle Ihre yes
abzuschütteln Sitzungen auf einmal.
$ killall yes