aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Game-Server

Linux Performance-Befehle: Engpässe finden

Wenn ein Game-Server stockt, eine Webanwendung kriecht oder ein VPS plötzlich nicht mehr antwortet, ist Ihre erste Aufgabe, das „Warum" mit Zahlen zu beantworten. Die richtigen Linux Performance-Befehle existieren genau dafür: Statt zu raten, zeigen sie Ihnen innerhalb von Sekunden, ob der Engpass bei CPU, Arbeitsspeicher, Festplatte oder Netzwerk liegt. In diesem Artikel gehe ich das Quartett top, htop, iostat und vmstat anhand realer Szenarien durch und erkläre, wie Sie die von ihnen erzeugten Zahlen lesen.

Beginnen Sie mit dem Load Average: top

top wird mit praktisch jeder Distribution ausgeliefert, daher ist es die erste Anlaufstelle. Die load average-Zeile oben gibt die Anzahl der lauffähigen Aufgaben über die letzten 1, 5 und 15 Minuten an. Die praktische Regel: Teilen Sie diesen Wert durch Ihre Kernanzahl. Die Kernanzahl finden Sie mit nproc; auf einer Maschine mit 4 Kernen entspricht eine Last von 4 etwa 100 % Auslastung.

nproc            # Anzahl der Kerne
uptime           # nur die Load-Average-Zeile
top              # interaktive Überwachung

Innerhalb von top grenzt das Lesen der Felder in der CPU-Zeile den Engpass ein: us ist die von Benutzeranwendungen verbrauchte CPU, sy die Kernel- (System-)CPU und wa die Festplatten-/IO-Wartezeit. Ein hoher wa-Wert bedeutet „die CPU ist untätig, wartet aber auf die Festplatte" und schickt Sie direkt zur Speicherseite. Die Taste P sortiert Prozesse nach CPU und M nach Arbeitsspeicher, sodass Sie sofort sehen, welcher Prozess am meisten von einer bestimmten Ressource verbraucht.

Eine lesbarere Ansicht: htop

htop ist die farbige, mausfreundliche moderne Variante von top. Es ist selten standardmäßig installiert; fügen Sie es mit apt install htop oder dnf install htop hinzu. Die Balken oben zeigen jeden Kern einzeln, was Fälle aufdeckt, in denen ein einzelner Kern ausgelastet ist (typisch für Single-Thread-Prozesse).

  • F6 ändert die Sortierspalte, sodass Sie den teuersten Prozess nach vorne holen.
  • F4 filtert, um nur den Prozess anzuzeigen, der Sie interessiert (zum Beispiel mysqld oder die Binärdatei Ihres Game-Servers).
  • F5 die Baumansicht verdeutlicht, welcher Elternprozess welche Kindprozesse erzeugt hat.

Im Speicherbalken steht Grün für genutztes RAM und Gelb für Puffer/Cache. Es ist völlig normal, dass Linux freies RAM dem Cache widmet; bevor Sie in Panik geraten, dass „das RAM voll ist", bestätigen Sie den echten Engpass, indem Sie die swap-Nutzung betrachten. Steigt der Swap stetig, ist der Arbeitsspeicher tatsächlich unzureichend.

Für Festplatten-Engpässe: iostat

Wenn Sie einen hohen wa-Wert gesehen haben, folgt iostat. Das Werkzeug ist im Paket sysstat enthalten (apt install sysstat). Aussagekräftige Daten erhalten Sie durch Abtastung in Intervallen, nicht durch eine einzelne Momentaufnahme:

iostat -x 2      # erweiterte Statistiken alle 2 Sekunden

Die kritischen Spalten sind: %util, der Prozentsatz der Zeit, in der die Festplatte beschäftigt war; liegt er dauerhaft über 90 %, ist die Festplatte gesättigt. await ist die durchschnittliche Zeit, die eine I/O-Anfrage bis zum Abschluss benötigt (ms); auf einer SSD erwarten Sie einstellige Werte und auf einer drehenden Festplatte zweistellige Millisekunden, weit darüber liegende Werte sind also ein Warnsignal. r/s und w/s geben die Anzahl der Lese-/Schreibvorgänge pro Sekunde an. Ignorieren Sie die erste Zeile, denn sie ist der Durchschnitt seit dem Start; betrachten Sie die zweite Zeile und folgende.

Auf einem Datenbankserver bedeuten hohe await- und %util-Werte, dass entweder Ihre Abfragen die Festplatte unnötig belasten oder das RAM zu klein ist und das System ständig auf die Festplatte zugreift. Die Lösung ist meist keine schnellere Festplatte, sondern das Indizieren Ihrer Abfragen oder das Hinzufügen von Arbeitsspeicher.

Für das Gesamtbild: vmstat

vmstat fasst CPU, Arbeitsspeicher, Swap und I/O in einer einzigen Zeile zusammen, was es zum idealen Werkzeug für die „Erstdiagnose" macht. Führen Sie es ebenfalls in einem Intervall aus:

vmstat 2         # Zusammenfassung alle 2 Sekunden

Die zu lesenden Felder: Die Spalte r ist die Anzahl der Prozesse, die laufbereit sind, aber auf die CPU warten; bleibt sie über Ihrer Kernanzahl, haben Sie einen CPU-Engpass. b zählt Prozesse im ununterbrechbaren Schlaf (meist wartend auf I/O). si/so sind der pro Sekunde in/aus dem Swap verschobene Speicher; von null verschiedene, anhaltende Werte sind ein eindeutiger Beweis für Speicherdruck. wa ist wiederum die I/O-Wartezeit. Sind schließlich cs (Kontextwechsel) und in (Interrupts) sehr hoch, haben Sie womöglich eine Last, die übermäßige Kontextwechsel erzeugt (zum Beispiel Tausende kurzlebiger Prozesse).

Ein praktischer Diagnoseablauf

Der effizienteste Ansatz ist, diese Werkzeuge als Ablauf statt einzeln zu nutzen:

  • Schritt 1: Prüfen Sie mit top oder htop den Load Average und welcher Prozess hervorsticht.
  • Schritt 2: Entscheiden Sie, ob die CPU voll ist oder wa hoch. Bei CPU: profilieren Sie den Prozess; bei wa: gehen Sie zur Festplatte.
  • Schritt 3: Bestätigen Sie mit iostat -x 2, ob die Festplatte gesättigt ist (%util, await).
  • Schritt 4: Prüfen Sie mit vmstat 2 die Swap-Nutzung (si/so), um zu klären, ob Speicherdruck vorliegt.
  • Schritt 5: Bei Netzwerkverdacht prüfen Sie die Verbindungsanzahl und den lauschenden Prozess mit ss -s und ss -tnp.

Diese fünf Schritte verwandeln eine vage Beschwerde wie „der Server ist langsam" innerhalb von Minuten in einen konkreten Befund wie „MySQL sättigt die Festplatte" oder „ein einzelner Kern ist blockiert". Für kontinuierliche Überwachung können Sie zu Werkzeugen wie Netdata oder Prometheus übergehen, die auf eben diesen Befehlen aufbauen; doch zuerst zu wissen, wie man die manuellen Befehle liest, erleichtert auch die Interpretation der Dashboard-Diagramme erheblich.

Häufige Fragen

Sollte ich top oder htop verwenden?

Beide zeigen dieselben zugrunde liegenden Daten. top ist in Notfällen zuverlässig, weil es immer vorhanden ist; htop ist lesbarer, mit der Maus navigierbar und erleichtert Aufgaben wie das Beenden oder Filtern von Prozessen. Für den täglichen Gebrauch empfehle ich, htop zu installieren, aber dennoch top lesen zu können.

Welcher Load Average sollte mich beunruhigen?

Es gibt keinen einzelnen Schwellenwert; teilen Sie den Wert durch Ihre Kernanzahl. Auf einem System mit 4 Kernen bedeutet rund 4 voll ausgelastet und 8 die doppelte Last. Aber um zu unterscheiden, ob die Last von der CPU oder von der I/O-Wartezeit kommt, prüfen Sie stets auch den wa-Wert.

Warum sieht die erste Zeile von iostat anders aus?

Die erste Zeile ist der seit dem Start aufgelaufene Durchschnitt und spiegelt nicht den aktuellen Zustand wider. Um das echte Verhalten zu sehen, führen Sie es in einem Intervall wie iostat -x 2 aus und lesen ab der zweiten Zeile.

Kämpft Ihr Server mit Engpässen? Wir können die Leistung Ihres Game-Servers, VPS oder Ihrer Datenbank gemeinsam diagnostizieren und in eine dauerhafte Lösung verwandeln. Kontaktieren Sie mich und lassen Sie uns Ihren Server beschleunigen.

Bu kategorideki tüm yazılar →

Devamı için