15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
15.11.2023

Befehle und Tools zur Überprüfung des RAM-Verbrauchs in Linux

Die Überwachung der RAM-Nutzung in Linux bedeutet, das Speicher-Subsystem des Kernels abzufragen, um Metriken zur physischen Speicherzuweisung, Swap-Auslastung und prozessspezifischen Resident Set Sizes abzurufen. Die direktesten Methoden verwenden integrierte Dienstprogramme — free, top, htop, ps, vmstat und smem — die jeweils eine andere Ebene der Speicherhierarchie offenlegen, von systemweiten Gesamtwerten bis hin zur prozessspezifischen Proportional Set Size (PSS).

Übermäßiger Speicherdruck löst den Linux Out-of-Memory (OOM) Killer aus, der Prozesse zwangsweise beendet, um RAM freizugeben. Zu verstehen, welche Befehle welche Metriken anzeigen — und was diese Metriken tatsächlich bedeuten — ist der Unterschied zwischen reaktiver Fehlerbehebung und proaktivem Kapazitätsmanagement. Dieser Leitfaden behandelt alle wichtigen Tools, die Kernel-Datenquellen, aus denen sie lesen, und die Sonderfälle, die selbst erfahrene Administratoren überraschen.

Warum RAM-Überwachung auf Linux-Servern wichtig ist

Das Linux-Speichermanagement ist bewusst aggressiv ausgelegt. Der Kernel nutzt den gesamten verfügbaren RAM als Page-Cache, um die Festplatten-I/O zu beschleunigen. Das bedeutet, dass ein System, das nahezu keinen freien Speicher meldet, nicht unbedingt unter Druck steht — es könnte einfach effizient cachen. Diese Verhaltensweise falsch zu interpretieren ist einer der häufigsten Fehler bei der Auswertung von Rohspeicherwerten.

Wichtige Gründe für eine kontinuierliche RAM-Überwachung:

  • OOM-Killer-Prävention: Speicherhungrige Prozesse identifizieren, bevor der Kernel kritische Dienste beendet.
  • Swap-Nutzungserkennung: Intensive Swap-Aktivität (Swapping) weist auf RAM-Erschöpfung hin und verursacht erhebliche I/O-Latenz.
  • Diagnose von Speicherlecks: Prozesse mit stetig wachsendem RSS über die Zeit signalisieren Lecks auf Anwendungsebene.
  • Kapazitätsplanung: Trenddaten informieren Entscheidungen über vertikale Skalierung oder Workload-Umverteilung.
  • Performance-Tuning: Die Anpassung von vm.swappiness, Huge Pages und NUMA-Topologie erfordert grundlegende Speicherdaten.

In einer VPS Hosting-Umgebung, in der Ressourcen geteilt oder durch Hypervisor-Limits begrenzt sind, ist eine genaue RAM-Überwachung besonders kritisch — das Erreichen einer Speichergrenze beeinträchtigt die Leistung still und leise, bevor ein Alarm ausgelöst wird.

Linux-Speicherterminologie verstehen

Bevor Sie einen Befehl ausführen, müssen Sie verstehen, was die Ausgabespalten tatsächlich darstellen.

BegriffDefinition
TotalInstallierter physischer RAM (oder der VM zugewiesener RAM)
UsedAktiv von Prozessen und Kernel-Strukturen genutzter Speicher
FreeVollständig ungenutzter RAM — oft irreführend niedrig
SharedVon tmpfs genutzter und zwischen Prozessen geteilter Speicher
Buff/CacheKernel-Puffer und Page-Cache — bei Bedarf zurückforderbar
AvailableRealistische Schätzung des für neue Zuweisungen verfügbaren RAM ohne Swapping
Swap UsedAus dem RAM auf die Swap-Partition oder Swap-Datei ausgelagerter Speicher
VSZ (Virtual Size)Gesamter von einem Prozess reservierter virtueller Adressraum
RSS (Resident Set Size)Aktuell von einem Prozess belegter physischer RAM
PSS (Proportional Set Size)RSS angepasst für gemeinsam genutzten Speicher — die genaueste prozessspezifische Metrik
USS (Unique Set Size)Ausschließlich einem Prozess gehörender Speicher; wird beim Beenden vollständig freigegeben

Wichtige Erkenntnis: Verwenden Sie bei der Beurteilung, ob ein System genug RAM für eine neue Arbeitslast hat, immer die Spalte Available aus free -h, nicht die Spalte Free. Die Free-Spalte ignoriert zurückforderbaren Cache und führt zu Fehlalarmen.

Die Datei /proc/meminfo: Die maßgebliche Quelle

Jedes in diesem Artikel beschriebene Tool liest aus /proc/meminfo, einer virtuellen Datei, die der Kernel in Echtzeit pflegt. Eine direkte Inspektion liefert die detailliertesten verfügbaren Daten:

cat /proc/meminfo

Wichtige zu beobachtende Felder:

  • MemTotal — gesamter nutzbarer RAM
  • MemFree — vollständig ungenutzter RAM
  • MemAvailable — geschätzter verfügbarer RAM für neue Prozesse
  • Buffers — roher Festplatten-Block-Cache
  • Cached — Page-Cache für Dateien
  • SwapTotal / SwapFree — Swap-Kapazität und -Verfügbarkeit
  • Dirty — Speicher, der darauf wartet, auf die Festplatte geschrieben zu werden (hohe Werte weisen auf I/O-Druck hin)
  • HugePages_Total / HugePages_Free — Status der Huge-Page-Zuweisung
  • Slab — Kernel-Datenstruktur-Cache (kann auf stark ausgelasteten NFS- oder Datenbankservern groß werden)

Das Verständnis von /proc/meminfo ermöglicht es Ihnen, die Ausgabe jedes anderen Tools mit vollem Kontext zu interpretieren.

RAM mit dem Befehl free prüfen

free ist der schnellste Weg, einen systemweiten Speicher-Snapshot zu erhalten. Es liest direkt aus /proc/meminfo und formatiert die Ausgabe in eine lesbare Tabelle.

Grundlegende Verwendung

free

Die Ausgabe erfolgt standardmäßig in Kilobyte. Verwenden Sie Flags für besser lesbare Formate:

free -h        # Human-readable (MB/GB)
free -m        # Output in megabytes
free -g        # Output in gigabytes
free -s 5      # Refresh every 5 seconds (continuous monitoring)
free -h --si   # Use SI units (1000-based) instead of binary (1024-based)

Beispielausgabe erklärt

              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.2Gi       1.1Gi       312Mi       9.8Gi       10.9Gi
Swap:         2.0Gi       128Mi       1.9Gi

In diesem Beispiel scheint das System nur 1,1 GB frei zu haben, aber 10,9 GB sind tatsächlich verfügbar für neue Prozesse, da der Kernel den Buff/Cache bei Bedarf zurückfordern wird. Dies ist das Wichtigste, was man über die Ausgabe von free verstehen muss.

Sonderfall: Swap-Nutzung als Warnsignal

Selbst eine geringe Swap-Nutzung (Swap: used > 0) auf einem Produktionsserver rechtfertigt eine Untersuchung. Es bedeutet, dass der Kernel bereits entschieden hat, dass einige Speicherseiten besser auf der Festplatte als im RAM gespeichert werden — ein Zeichen dafür, dass der Working Set den physischen Speicher übersteigt.

RAM mit dem Befehl top prüfen

top bietet eine kontinuierlich aktualisierte Echtzeit-Ansicht der Systemressourcennutzung und kombiniert CPU- und Speicherstatistiken mit einer nach Rang sortierten Prozessliste.

top

Wichtige Speicherfelder in top

Am oberen Rand der top-Oberfläche zeigen zwei Zeilen Speicherstatistiken:

MiB Mem :  16384.0 total,   1126.4 free,   4301.2 used,  10956.4 buff/cache
MiB Swap:   2048.0 total,   1920.0 free,    128.0 used.  11200.0 avail Mem

In der Prozesstabelle sind die relevantesten Speicherspalten:

  • VIRT — Größe des virtuellen Speichers (VSZ-Äquivalent)
  • RES — residenter physischer Speicher (RSS)
  • SHR — gemeinsam genutzter Speicheranteil von RES
  • %MEM — Prozentsatz des genutzten gesamten physischen RAM

Nützliche interaktive top-Befehle

TasteAktion
MProzesse nach Speichernutzung sortieren (%MEM)
PNach CPU-Nutzung sortieren
kEinen Prozess per PID beenden
1Statistiken pro CPU-Kern umschalten
fAnzeigefelder hinzufügen/entfernen
WAktuelle Konfiguration speichern

top nicht-interaktiv ausführen

Für Skripting und Protokollerfassung führen Sie top im Batch-Modus aus:

top -b -n 1 | head -30

Dies gibt einen einzelnen Snapshot aus — nützlich für cron-basierte Überwachungsskripte.

RAM mit htop prüfen

htop ist ein erweiterter, ncurses-basierter Prozess-Viewer, der dieselben zugrunde liegenden Daten wie top mit einer deutlich benutzerfreundlicheren Oberfläche präsentiert. Es ist auf den meisten Distributionen nicht standardmäßig installiert.

Installation

# Debian / Ubuntu
apt-get install htop

# RHEL / CentOS / AlmaLinux / Rocky Linux
yum install htop
# or on newer versions:
dnf install htop

# Alpine Linux
apk add htop

Was htop gegenüber top bietet

  • Farbcodierte Speicherbalken, die auf einen Blick zwischen genutztem Speicher, Puffern und Cache unterscheiden
  • Horizontale und vertikale Prozessbaumansicht (F5)
  • Mausunterstützung zum Klicken und Scrollen
  • Mehrfachauswahl für die Massenverwaltung von Prozessen
  • Integrierte Suche (F3) und Filter (F4) ohne das Auswendiglernen von Tastenkombinationen
  • Direkte Anzeige des verfügbaren Speichers prominent in der Kopfzeile

htop Speicherbalken-Farblegende

FarbeBedeutung
GrünGenutzter Speicher (Prozesse)
BlauPuffer-Cache
Gelb/OrangePage-Cache
RotGenutzter Swap

Profi-Tipp: Drücken Sie in htop F2 (Setup) > Anzeigeoptionen > aktivieren Sie „CPU-Frequenz anzeigen” und „Detaillierte CPU-Zeit” für ein vollständigeres Bild neben den Speicherdaten.

RAM mit dem Befehl ps prüfen

ps (Prozessstatus) fragt die Prozesstabelle des Kernels ab und kann sortiert und gefiltert werden, um die größten Speicherverbraucher zu einem bestimmten Zeitpunkt zu identifizieren.

Prozesse nach Speicherverbrauch sortieren

ps aux --sort=-%mem

Ausgabespalten erklärt

SpalteBeschreibung
USEREigentümer des Prozesses
PIDProzess-ID
%CPUCPU-Auslastung seit Prozessstart
%MEMProzentualer Anteil des genutzten physischen RAM (RSS / MemTotal)
VSZGröße des virtuellen Speichers in KB
RSSResident Set Size in KB
TTYSteuerndes Terminal
STATProzesszustand (S=schlafend, R=laufend, Z=Zombie, D=unterbrechungsfreies Warten)
STARTStartzeit des Prozesses
TIMEKumulierte verbrauchte CPU-Zeit
COMMANDBefehlsname und Argumente

Praktische Einzeiler

Die 10 speicherintensivsten Prozesse mit lesbarer Ausgabe anzeigen:

ps aux --sort=-%mem | head -11

Speichernutzung für einen bestimmten Prozessnamen anzeigen (z. B. Apache):

ps aux | grep apache2 | awk '{sum += $6} END {print sum/1024 " MB"}'

Dies summiert die RSS-Werte aller apache2-Worker-Prozesse — entscheidend für das Verständnis des tatsächlichen Speicherbedarfs von Multi-Prozess-Webservern.

Wichtiger Vorbehalt: ps zeigt RSS, das gemeinsam genutzte Bibliotheken doppelt zählt. Wenn 20 Apache-Worker jeweils dieselbe 50 MB große gemeinsam genutzte Bibliothek einbinden, meldet ps 1.000 MB an gemeinsam genutzter Bibliotheksnutzung, während die tatsächlichen physischen Kosten nur 50 MB betragen. Verwenden Sie smem für eine genaue Abrechnung.

RAM mit smem prüfen

smem ist das genaueste prozessspezifische Speicher-Accounting-Tool unter Linux, da es PSS (Proportional Set Size) meldet — gemeinsam genutzter Speicher wird proportional auf alle Prozesse aufgeteilt, die ihn einbinden, wodurch das bei RSS-basierten Tools inhärente Doppelzählungsproblem eliminiert wird.

Installation

# Ubuntu / Debian
apt-get install smem

# CentOS / RHEL 7
yum install smem

# RHEL 8+ / AlmaLinux / Rocky Linux
dnf install smem

# Alternatively, install via pip
pip install smem

Grundlegende Verwendung

smem

Nützliche smem-Optionen

smem -r              # Sort by RSS (descending)
smem -s pss -r       # Sort by PSS (most accurate, descending)
smem -u              # Aggregate by user
smem -m              # Show system-wide memory map
smem -p              # Show percentages instead of raw KB
smem -k              # Show values in KB
smem -t              # Show totals row
smem --pie name      # Generate a pie chart (requires matplotlib)
smem -P apache2      # Filter by process name pattern

PSS vs. RSS: Warum es wichtig ist

Betrachten Sie einen Server mit 10 Node.js-Worker-Prozessen, die jeweils eine 100 MB große V8-Laufzeitbibliothek teilen:

  • RSS pro Prozess: 200 MB (100 MB gemeinsam genutzt + 100 MB privat)
  • Gemeldetes RSS gesamt: 2.000 MB
  • PSS pro Prozess: 110 MB (10 MB Anteil von 100 MB + 100 MB privat)
  • Gemeldetes PSS gesamt: 1.100 MB
  • Tatsächlich genutzter physischer RAM: 1.100 MB

RSS überschätzt die Nutzung in diesem Szenario um fast das Doppelte. Bei Skalierungsentscheidungen auf einem Dedicated Server liefert die Verwendung von PSS aus smem die absolute Wahrheit.

RAM mit vmstat prüfen

vmstat (Virtual Memory Statistics) bietet einen umfassenderen Überblick über Speicher-, Swap-, I/O- und CPU-Aktivitäten und eignet sich ideal zur Diagnose von systemweitem Speicherdruck anstelle von Einzelprozess-Problemen.

vmstat 2 10    # Report every 2 seconds, 10 times

Wichtige Speicherspalten

SpalteBeschreibung
swpdGenutzter virtueller Speicher (Swap)
freeUngenutzter Speicher
buffAls Puffer genutzter Speicher
cacheAls Cache genutzter Speicher
siVon der Festplatte eingelesener Speicher (KB/s)
soAuf die Festplatte ausgelagerter Speicher (KB/s)

Kritisches Signal: Werte ungleich null für si (Swap-in) und so (Swap-out) in einem laufenden vmstat-Stream weisen auf aktives Swapping hin — ein eindeutiges Zeichen für Speichererschöpfung. Selbst gelegentliche Spitzen bei so können Anwendungs-Latenzspitzen von Hunderten von Millisekunden verursachen.

RAM mit sar (System Activity Reporter) prüfen

sar aus dem sysstat-Paket zeichnet historische Speicherdaten auf und ermöglicht eine retrospektive Analyse — etwas, das Echtzeit-Tools nicht leisten können.

Installation

apt-get install sysstat    # Debian/Ubuntu
yum install sysstat        # CentOS/RHEL

Verwendung

sar -r 1 5          # Memory stats every 1 second, 5 times
sar -r -f /var/log/sysstat/sa$(date +%d)   # Today's historical data
sar -S 1 5          # Swap statistics

sar ist unschätzbar wertvoll, um Fragen zu beantworten wie „Gab es um 3 Uhr morgens eine Speicherspitze, die den Anwendungsabsturz verursacht hat?” — eine Frage, die kein Echtzeit-Tool im Nachhinein beantworten kann.

RAM mit /proc/<PID>/status und /proc/<PID>/smaps prüfen

Für eine tiefgehende prozessspezifische Analyse stellt der Kernel detaillierte Speicherkarten direkt in /proc bereit.

Schnelle prozessspezifische Speicherprüfung

cat /proc/$(pgrep nginx | head -1)/status | grep -E "VmRSS|VmPeak|VmSize|VmSwap"

Ausgabebeispiel:

VmPeak:   512340 kB
VmSize:   498120 kB
VmRSS:    102400 kB
VmSwap:        0 kB
  • VmPeak — maximale jemals von diesem Prozess erreichte virtuelle Speichergröße
  • VmRSS — aktuelle Resident Set Size
  • VmSwap — wie viel von diesem Prozess ausgelagert wurde

Detaillierte Speicherkarte mit smaps

cat /proc/$(pgrep mysql | head -1)/smaps | grep -E "^(Size|Rss|Pss|Shared|Private)"

Dies zeigt jede Speicherzuordnung (Heap, Stack, gemeinsam genutzte Bibliotheken, anonyme Zuordnungen) mit individuellen RSS- und PSS-Werten — die detaillierteste verfügbare Speicheransicht ohne einen Profiler.

Tool-Vergleich: Den richtigen Befehl wählen

ToolBereichMetriktypEchtzeitHistorischGenauigkeit gemeinsamer SpeicherBester Anwendungsfall
freeSystemweitGesamt/VerfügbarJaNeinN/ASchnelle Zustandsprüfung
topPro Prozess + SystemRSS, %MEMJaNeinNiedrig (RSS)Interaktive Überwachung
htopPro Prozess + SystemRSS, %MEMJaNeinNiedrig (RSS)Interaktive Überwachung (bevorzugt)
psPro ProzessRSS, VSZSnapshotNeinNiedrig (RSS)Skripting, Sortierung
smemPro ProzessPSS, USS, RSSSnapshotNeinHoch (PSS)Genaues Speicher-Accounting
vmstatSystemweitSwap-I/O, freiJaNeinN/ADiagnose von Swap-Druck
sarSystemweitAlle MetrikenNeinJaN/AAnalyse nach einem Vorfall
/proc/meminfoSystemweitRohe Kernel-DatenJaNeinN/ASkripting, Automatisierung
/proc/PID/smapsPro ProzessVollständige KarteJaNeinHochTiefes Prozess-Profiling

Praktische Überwachungs-Workflows

Workflow 1: Schnelle Triage (unter 60 Sekunden)

free -h                          # Step 1: Is Available memory critically low?
vmstat 1 5                       # Step 2: Is active swapping occurring?
ps aux --sort=-%mem | head -15   # Step 3: Which processes are the top consumers?

Workflow 2: Identifizierung eines Speicherlecks

# Watch a specific process's RSS grow over time
watch -n 5 'ps -o pid,rss,vsz,comm -p $(pgrep your_app)'

# Or use smem with repeated snapshots
while true; do smem -P your_app -t; sleep 30; done

Workflow 3: Historische Analyse nach einem Vorfall

sar -r -f /var/log/sysstat/sa$(date +%d --date='yesterday')

Workflow 4: Automatisiertes Alarmierungs-Skript

#!/bin/bash
THRESHOLD=90
USED_PCT=$(free | awk '/^Mem:/ {printf "%.0f", $3/$2 * 100}')
if [ "$USED_PCT" -gt "$THRESHOLD" ]; then
    echo "ALERT: RAM usage at ${USED_PCT}% on $(hostname)" | mail -s "Memory Alert" admin@example.com
fi

Dieses Skript kann in einem Cron-Job für eine kontinuierliche automatisierte Überwachung platziert werden — eine praktische Notwendigkeit auf jedem Produktions-VPS mit cPanel oder Bare-Metal-Server.

Erweitert: Kernel-Speicher-Tuning-Parameter

Sobald Sie Speicherdruck identifiziert haben, beeinflussen diese sysctl-Parameter das Verhalten direkt:

# View current swappiness (default: 60)
sysctl vm.swappiness

# Reduce swap tendency (recommended for databases: 10)
sysctl -w vm.swappiness=10

# Increase dirty page write-back aggressiveness
sysctl -w vm.dirty_ratio=15
sysctl -w vm.dirty_background_ratio=5

# Drop page cache manually (use with caution on production)
sync; echo 3 > /proc/sys/vm/drop_caches

vm.swappiness erklärt: Ein Wert von 60 bedeutet, dass der Kernel mit dem Swapping beginnt, wenn 40 % des RAM genutzt werden. Für Datenbankserver (MySQL, PostgreSQL, Redis) hält die Einstellung auf 10 die Daten deutlich länger im RAM und reduziert die I/O-Latenz drastisch. Für Desktop-Systeme oder Systeme mit begrenztem RAM ist der Standardwert angemessener.

Häufige Fallstricke und Fehlinterpretationen

Fallstrick 1: Panik wegen niedrigem „freiem” Speicher

Wie bereits erläutert, nutzt Linux freien RAM absichtlich als Cache. Ein System mit 200 MB frei, aber 8 GB verfügbar, ist gesund. Lesen Sie immer die Spalte „Available”.

Fallstrick 2: RSS-Werte summieren, um die gesamte Speichernutzung zu schätzen

Die Summierung der ps-RSS-Werte über alle Prozesse hinweg übersteigt typischerweise den gesamten physischen RAM aufgrund der Doppelzählung gemeinsam genutzter Bibliotheken. Verwenden Sie smem -t für eine genaue Systemgesamtzahl.

Fallstrick 3: Den Slab-Cache ignorieren

Auf stark ausgelasteten NFS-Clients oder Servern mit vielen kleinen Dateien kann der Kernel-Slab-Allocator Gigabytes an RAM verbrauchen. Prüfen Sie cat /proc/meminfo | grep Slab — dieser Speicher ist technisch gesehen zurückforderbar, erscheint aber nicht in prozessspezifischen Tools.

Fallstrick 4: VSZ mit tatsächlicher Speichernutzung verwechseln

Eine Java-Anwendung kann 4 GB VSZ anzeigen, aber nur 512 MB RSS. VSZ umfasst speichergemappte Dateien, reservierten aber nicht zugewiesenen Heap und gemeinsam genutzte Bibliotheken — von denen die meisten nie tatsächlich in den physischen RAM geladen werden.

Fallstrick 5: Speicher bei containerisierten Workloads übersehen

Innerhalb eines Docker-Containers zeigt free den gesamten RAM des Hosts, nicht das cgroup-Limit des Containers. Verwenden Sie cat /sys/fs/cgroup/memory/memory.usage_in_bytes und cat /sys/fs/cgroup/memory/memory.limit_in_bytes für genaue Metriken auf Container-Ebene.

Persistente RAM-Überwachung einrichten

Für Produktionsumgebungen sind punktuelle Befehle unzureichend. Erwägen Sie diese Ansätze für kontinuierliche Transparenz:

  • sysstat mit cron: Ermöglicht die automatische historische sar-Datenerfassung.
  • Prometheus + Node Exporter: Liest /proc/meminfo-Metriken und stellt sie für Grafana-Dashboards bereit.
  • Netdata: Echtzeit-Überwachung ohne Konfiguration mit Granularität pro Sekunde und integrierter Speicher-Anomalieerkennung.
  • Zabbix oder Nagios: Enterprise-Alarmierung mit konfigurierbaren Speicherschwellenwerten und Eskalationsrichtlinien.

Beim Ausführen von Workloads auf GPU Hosting-Infrastruktur sollten Sie auch GPU VRAM neben dem System-RAM überwachen — nvidia-smi --query-gpu=memory.used,memory.free --format=csv liefert die entsprechenden Metriken für den GPU-Speicher.

Für Web-Hosting-Umgebungen, die über VPS Control Panels verwaltet werden, enthalten die meisten Panels integrierte Speichergraphen — diese fragen jedoch typischerweise im 1–5-Minuten-Intervall ab und verpassen kurzfristige Spitzen, die vmstat oder sar erfassen würden.

Technische Entscheidungsmatrix: Welches Tool wann verwenden

SzenarioEmpfohlenes ToolBefehl
Schnelle Systemzustandsprüfungfreefree -h
Größte Speicherverbraucher jetzt findenps oder htop`ps aux –sort=-%memhead -15`
Genaues prozessspezifisches Accountingsmemsmem -s pss -r
Aktives Swapping diagnostizierenvmstatvmstat 1 10
Vergangenen Speichervorfall untersuchensarsar -r -f /var/log/sysstat/saDD
Einen bestimmten Prozess tiefgehend analysieren/proc/PID/smapscat /proc/PID/smaps
Kontinuierliche ProduktionsüberwachungPrometheus + Node Exporter
Container-Speicherlimitscgroup-Dateisystemcat /sys/fs/cgroup/memory/memory.usage_in_bytes

Checkliste der wichtigsten Erkenntnisse

  • Prüfen Sie immer den verfügbaren Speicher aus free -h, nicht die Spalte Free, um den tatsächlichen Spielraum zu beurteilen.
  • Verwenden Sie vmstat 1 5, um aktives Swapping zu bestätigen oder auszuschließen, bevor Sie eine Untersuchung eskalieren.
  • Verwenden Sie smem -s pss -r anstelle von ps aux --sort=-%mem, wenn Sie genaue prozessspezifische Speicherwerte benötigen — insbesondere auf Servern mit vielen Prozessen, die Bibliotheken teilen.
  • Installieren Sie sysstat unmittelbar nach der Bereitstellung auf jedem Produktionsserver, um die historische sar-Datenerfassung zu aktivieren.
  • Setzen Sie vm.swappiness=10 dauerhaft in /etc/sysctl.conf auf Datenbankservern, um die Swap-Nutzung zu minimieren.
  • Prüfen Sie /proc/meminfo auf Slab– und Dirty-Werte, wenn Standardtools den beobachteten Speicherdruck nicht erklären.
  • Lesen Sie bei containerisierten Workloads cgroup-Speicherdateien — nicht free — für genaue Limits und Nutzung.
  • Erstellen Sie in Shared-Hosting- oder VPS-Umgebungen Speicher-Baselines während des Normalbetriebs, damit Anomalien sofort erkennbar sind.

Häufig gestellte Fragen

Was ist der Unterschied zwischen „freiem” und „verfügbarem” Speicher in Linux?

„Frei” ist RAM ohne jegliche aktuelle Nutzung. „Verfügbar” ist die realistische Schätzung des Speichers, der neuen Prozessen zugewiesen werden kann, ohne Swapping auszulösen — er umfasst zurückforderbaren Page-Cache und Puffer. Auf einem gesunden Linux-Server ist „frei” oft nahe null, während „verfügbar” hoch bleibt. Verwenden Sie immer „verfügbar” für Kapazitätsbewertungen.

Warum übersteigt die Summe aller Prozess-RSS-Werte den gesamten physischen RAM?

RSS (Resident Set Size) zählt gemeinsam genutzten Speicher — wie gemeinsam genutzte Bibliotheken — einmal pro Prozess, der ihn einbindet. Wenn 50 Prozesse jeweils eine 100 MB große gemeinsam genutzte Bibliothek einbinden, erhöht sich die RSS-Gesamtsumme um 4.900 MB über die tatsächlichen physischen Kosten hinaus. Verwenden Sie smem mit PSS-Berichterstattung, um diese Doppelzählung zu eliminieren.

Wie finde ich heraus, welcher Prozess den Linux OOM-Killer ausgelöst hat?

Führen Sie dmesg | grep -i "oom|killed process" oder journalctl -k | grep -i oom aus. Der Kernel protokolliert den genauen Prozessnamen, die PID und die Speicherstatistiken zum Zeitpunkt des Kill-Ereignisses, einschließlich des oom_score aller bewerteten Prozesse.

Was bedeutet hohe Swap-Nutzung und wie ernst ist sie?

Anhaltende Swap-Nutzung bedeutet, dass der Working Set des Systems den physischen RAM übersteigt. Der Kernel kompensiert dies durch das Auslagern von Daten auf die Festplatte, was typischerweise 100–1.000-mal langsamer als RAM-Zugriff ist. Selbst moderate Swap-Aktivität verursacht messbare Anwendungslatenz. Es ist ein eindeutiges Signal, entweder den Speicherverbrauch zu reduzieren, RAM zu erhöhen oder Workloads umzuverteilen.

Kann ich die RAM-Nutzung innerhalb eines Docker-Containers mit Standard-Linux-Befehlen überwachen?

Standardbefehle wie free innerhalb eines Containers zeigen den gesamten RAM des Hosts, nicht das cgroup-Limit des Containers. Für genaue Metriken auf Container-Ebene lesen Sie /sys/fs/cgroup/memory/memory.usage_in_bytes für die aktuelle Nutzung und /sys/fs/cgroup/memory/memory.limit_in_bytes für das konfigurierte Limit. Alternativ verwenden Sie docker stats <container_name> vom Host für eine formatierte Ansicht.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen