Teil 3.2 : Linux-Task-Manager, Top und HTOP
Gilt für: .NET Core 2.1, .NET Core 3.1, .NET 5
In diesem Artikel wird erläutert, wie Sie Prozesse mithilfe top von htop Befehlszeilentools überwachen.
Voraussetzungen
Wie in den vorherigen Teilenist dieser Teil strukturiert, um den Schwerpunkt auf die Zu befolgende These und die Prinzipale zu legen, wenn Sie mit der Problembehandlung beginnen. Es gibt keine Voraussetzungen. Sie sollten jedoch bereits die folgenden Elemente eingerichtet haben, wenn Sie alle Schritte dieser Schulung bisher ausgeführt haben:
- Nginx verfügt über zwei Websites:
- Die erste Website lauscht mithilfe des Hostheaders "myfirstwebsite" ( ) auf Anforderungen
http://myfirstwebsiteund leitet die Anforderungen an die Demo ASP.NET Core Anwendung weiter, die an Port 5000 lauscht. - Die zweite Website lauscht mithilfe des Hostheaders "jsamb ( ) " auf Anforderungen
http://buggyambund leitet die Anforderungen an die zweite ASP.NET Core Beispielanwendung weiter, die an Port 5001 lauscht.
- Die erste Website lauscht mithilfe des Hostheaders "myfirstwebsite" ( ) auf Anforderungen
- Beide ASP.NET Core Anwendungen werden als Dienste ausgeführt, die automatisch neu gestartet werden, wenn der Server neu gestartet wird oder die Anwendungen nicht mehr reagieren oder fehlschlagen.
- Eine lokale Linux-Firewall ist aktiviert und konfiguriert, um SSH- und HTTP-Datenverkehr zuzulassen.
Ziel dieses Teils
Wenn Sie ein Leistungsproblem beheben, müssen Sie möglicherweise die CPU- und Speicherauslastung eines Prozesses überwachen, um zu verstehen, wie sich der Ressourcenverbrauch im Laufe der Zeit weiterentwickelt. In Windows können Sie dazu den Task-Manager verwenden. Linux verfügt über mehrere Tools, die dasselbe erreichen möchten.
In diesem Teil werden die top htop Befehlszeilentools zum Überwachen von Prozessen untersucht.
Nach oben
Führen Sie den Befehl aus, um die Task-Manager-Entsprechung in Linux zu top öffnen.
In diesem Beispiel können Sie im ersten aufgeführten Prozess für PID 19933 beobachten, dass der Prozess eine hohe CPU-Auslastung aufweist und auch die Speicherauslastung hoch ist.
Auswählen und Aufheben der Auswahl von Spalten
Wenn Sie Spalten in der Ansicht hinzufügen oder entfernen möchten, die das top Tool bereitstellt, drücken Sie während der Ausführung des Tools die F-Taste. Die Spalten, die durch ein Sternchen (*) gekennzeichnet sind, sind die Spalten, die zur Anzeige ausgewählt sind. Verwenden Sie die Pfeiltasten, um durch die verfügbaren Spalten zu navigieren, und verwenden Sie die Leertaste, um die Spalten auszuwählen oder die Auswahl aufzuheben. Drücken Sie dann esc, um zu beenden.
Die Änderungen werden für Ihr Benutzerkonto gespeichert. Bei der nächsten Ausführung top werden die von Ihnen ausgewählten Spalten angezeigt.
Filtern der Ausgabe nach Benutzern
Um problematische Ressourcenverbrauchsszenarien erreichen zu können, ist es wichtig zu wissen, wie die Ausgabe gefiltert top wird. Eine der gängigsten Methoden hierfür ist das Filtern von Prozessen nach Benutzername. Sie können U drücken und dann den Benutzernamen eingeben. Der folgende Screenshot zeigt das top Tool, das die verfügbaren Prozessmomentaufnahmen für den www-data-Benutzer filtert.
Wenn Sie die EINGABETASTE drücken, werden die Prozesse angezeigt, die vom angegebenen Benutzer ausgeführt werden (der www-data-Benutzer in diesem Beispiel).
Wenn Sie die Ausgabe der gefilterten top Ansicht überprüfen, können Sie sehen, dass zwei der Prozesse .NET-Prozesse sind. Dies sind die Prozesse, die die beiden ASP.NET Core-Anwendungen ausführen, während die anderen beiden Prozesse zu Nginx gehören.
Sie können Filter verwenden, wenn Sie top den Befehl direkt ausführen. Wenn Sie z. B. den top -u www-data Befehl ausführen, ergibt er die gleiche Ausgabe wie beim Öffnen des Tools und Drücken von top U, um nach Benutzer zu filtern.
Entfernen von Leerlaufprozessen
Drücken Sie "I", oder führen Sie den top -i Befehl aus, um die top Ausgabe so zu filtern, dass nur die Prozesse angezeigt werden, die die CPU verbrauchen. Der folgende Screenshot zeigt die Ausgabe des top -i -u www-data Befehls. Beachten Sie, dass die top Ausgabe die Leerlaufprozesse ausblendet, obwohl es vier Prozesse gibt, die mithilfe des Www-Data-Benutzerkontos gestartet wurden. Nur der Prozess mit PID=19933 verbraucht CPU.
Drücken Sie erneut I, um den Schalter umzuschalten und auch die Leerlaufprozesse anzuzeigen.
Kill-Prozesse
Um einen Prozess zu beenden oder zu beenden, müssen Sie ein Kill-Signal an den Prozess senden. Sie erinnern sich vielleicht, dass wir den sudo kill -9 <PID> Befehl zuvor verwendet haben, um einen Prozess zu beenden. Sie können Prozesse auch mithilfe von top . Drücken Sie K, um einen Prozess zu beenden, während er top ausgeführt wird, und geben Sie dann die PID des Prozesses ein, den Sie beenden möchten.
Nachdem Sie die EINGABETASTE gedrückt haben, top wird nach dem Signaltyp gefragt. Drücken Sie die EINGABETASTE noch einmal, um das Endsignal ( ) zu 15/sigterm senden.
Nach ein paar Sekunden sehen Sie, dass der Prozess für PID 122632 in der Liste fehlt. Denken Sie daran, dass der Prozess "122632" in den Listen dem ASP.NET Core Anwendung "ASP.NET Core" entspricht. Da es so konfiguriert wurde, dass er automatisch gestartet wird, sehen Sie, dass ein neuer .NET-Prozess mit einer neuen PID nach dem Herunterfahren gestartet wird.
Htop
Htop ist eine Prozessanzeige und eine Textmodusanwendung für die Systemüberwachung in Echtzeit, ähnlich wie top . Es ist einfach zu verwenden und zeigt eine vollständige Liste der ausgeführten Prozesse an.
Das htop Tool ist in der Distribution von Ubuntu Linux vorinstalliert, die zum Installieren des virtuellen Servers für diesen Kurs verwendet wird. Wenn htop sie nicht in Ihrer Linux-Distribution installiert ist, können Sie die Paketmanager in Linux verwenden, um sie zu installieren. (Weitere Informationen finden Sie in Teil 1.3 – Installieren von .NET Core in Linux.)
Führen Sie den Befehl aus, um das Tool zu htop starten. Sie sehen eine farbige Ausgabe, die der folgenden ähnelt.
Hinweis
Die untere Zeile gibt die Funktionstasten an, die Sie verwenden können. Drücken Sie F6, um nach verschiedenen Optionen zu sortieren, verwenden Sie die Pfeiltasten, um die PERCENT_MEM Spalte auszuwählen, und drücken Sie dann die EINGABETASTE. Dadurch werden die Prozesse nach Speicherauslastung sortiert.
Wie beim top Befehl können Sie Tastenkombinationen für mehrere Funktionen verwenden. Drücken Sie beispielsweise U, um den Benutzernamen aus einer Liste auszuwählen.
Die Ausgabe ist jedoch etwas htop verwirrend. Basierend auf der Ausgabe der letzten Beispiele sollten Sie erwarten, dass vier Prozesse für www-data-Benutzer angezeigt werden. Wir sehen jedoch, dass es viele weitere Einträge gibt. Was könnte die Ursache dafür sein?
Der Unterschied in der Ausgabe tritt auf, da htop standardmäßig sowohl Prozesse als auch deren Threads angezeigt werden. Es sei denn, Sie möchten die Threads sehen, es wird empfohlen, die Threadansicht immer zu deaktivieren, um die Ausgabe übersichtlicher zu gestalten. Um die Threadansicht zu deaktivieren und nur die Prozesse anzuzeigen, drücken Sie UMSCHALT+H. Der folgende Screenshot zeigt die Prozesse ohne Threads.
Wenn Sie einen Prozess beenden müssen, wählen Sie den Prozess mithilfe der Pfeiltasten aus, drücken Sie F9, und drücken Sie dann die EINGABETASTE, um das "Beenden"-Signal zu senden.
Anhand dieser prägnanten Übersicht können Sie verstehen, welche Prozesse ausgeführt werden und welche Ressourcen auf Ihrem System verbraucht werden. Drücken Sie zum Beenden htop F10 oder STRG+C.
Nächste Schritte
Teil 3.3 – Debugger, Kernabbilder und Sammeln von Core-Abbildern
Im nächsten Teil dieser Reihe ("Vorbereiten der Problembehandlung") werden Debugger und Speicherabbilddateien erläutert.