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.
| Begriff | Definition |
|---|---|
| Total | Installierter physischer RAM (oder der VM zugewiesener RAM) |
| Used | Aktiv von Prozessen und Kernel-Strukturen genutzter Speicher |
| Free | Vollständig ungenutzter RAM — oft irreführend niedrig |
| Shared | Von tmpfs genutzter und zwischen Prozessen geteilter Speicher |
| Buff/Cache | Kernel-Puffer und Page-Cache — bei Bedarf zurückforderbar |
| Available | Realistische Schätzung des für neue Zuweisungen verfügbaren RAM ohne Swapping |
| Swap Used | Aus 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/meminfoWichtige zu beobachtende Felder:
MemTotal— gesamter nutzbarer RAMMemFree— vollständig ungenutzter RAMMemAvailable— geschätzter verfügbarer RAM für neue ProzesseBuffers— roher Festplatten-Block-CacheCached— Page-Cache für DateienSwapTotal/SwapFree— Swap-Kapazität und -VerfügbarkeitDirty— 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-ZuweisungSlab— 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
freeDie 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.9GiIn 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.
topWichtige 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 MemIn 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
| Taste | Aktion |
|---|---|
M | Prozesse nach Speichernutzung sortieren (%MEM) |
P | Nach CPU-Nutzung sortieren |
k | Einen Prozess per PID beenden |
1 | Statistiken pro CPU-Kern umschalten |
f | Anzeigefelder hinzufügen/entfernen |
W | Aktuelle 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 -30Dies 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 htopWas 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
| Farbe | Bedeutung |
|---|---|
| Grün | Genutzter Speicher (Prozesse) |
| Blau | Puffer-Cache |
| Gelb/Orange | Page-Cache |
| Rot | Genutzter 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=-%memAusgabespalten erklärt
| Spalte | Beschreibung |
|---|---|
USER | Eigentümer des Prozesses |
PID | Prozess-ID |
%CPU | CPU-Auslastung seit Prozessstart |
%MEM | Prozentualer Anteil des genutzten physischen RAM (RSS / MemTotal) |
VSZ | Größe des virtuellen Speichers in KB |
RSS | Resident Set Size in KB |
TTY | Steuerndes Terminal |
STAT | Prozesszustand (S=schlafend, R=laufend, Z=Zombie, D=unterbrechungsfreies Warten) |
START | Startzeit des Prozesses |
TIME | Kumulierte verbrauchte CPU-Zeit |
COMMAND | Befehlsname und Argumente |
Praktische Einzeiler
Die 10 speicherintensivsten Prozesse mit lesbarer Ausgabe anzeigen:
ps aux --sort=-%mem | head -11Speichernutzung 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 smemGrundlegende Verwendung
smemNü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 patternPSS 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 timesWichtige Speicherspalten
| Spalte | Beschreibung |
|---|---|
swpd | Genutzter virtueller Speicher (Swap) |
free | Ungenutzter Speicher |
buff | Als Puffer genutzter Speicher |
cache | Als Cache genutzter Speicher |
si | Von der Festplatte eingelesener Speicher (KB/s) |
so | Auf 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/RHELVerwendung
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 statisticssar 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 kBVmPeak— maximale jemals von diesem Prozess erreichte virtuelle SpeichergrößeVmRSS— aktuelle Resident Set SizeVmSwap— 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
| Tool | Bereich | Metriktyp | Echtzeit | Historisch | Genauigkeit gemeinsamer Speicher | Bester Anwendungsfall |
|---|---|---|---|---|---|---|
free | Systemweit | Gesamt/Verfügbar | Ja | Nein | N/A | Schnelle Zustandsprüfung |
top | Pro Prozess + System | RSS, %MEM | Ja | Nein | Niedrig (RSS) | Interaktive Überwachung |
htop | Pro Prozess + System | RSS, %MEM | Ja | Nein | Niedrig (RSS) | Interaktive Überwachung (bevorzugt) |
ps | Pro Prozess | RSS, VSZ | Snapshot | Nein | Niedrig (RSS) | Skripting, Sortierung |
smem | Pro Prozess | PSS, USS, RSS | Snapshot | Nein | Hoch (PSS) | Genaues Speicher-Accounting |
vmstat | Systemweit | Swap-I/O, frei | Ja | Nein | N/A | Diagnose von Swap-Druck |
sar | Systemweit | Alle Metriken | Nein | Ja | N/A | Analyse nach einem Vorfall |
/proc/meminfo | Systemweit | Rohe Kernel-Daten | Ja | Nein | N/A | Skripting, Automatisierung |
/proc/PID/smaps | Pro Prozess | Vollständige Karte | Ja | Nein | Hoch | Tiefes 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; doneWorkflow 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
fiDieses 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_cachesvm.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:
sysstatmit cron: Ermöglicht die automatische historischesar-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
| Szenario | Empfohlenes Tool | Befehl | |
|---|---|---|---|
| Schnelle Systemzustandsprüfung | free | free -h | |
| Größte Speicherverbraucher jetzt finden | ps oder htop | `ps aux –sort=-%mem | head -15` |
| Genaues prozessspezifisches Accounting | smem | smem -s pss -r | |
| Aktives Swapping diagnostizieren | vmstat | vmstat 1 10 | |
| Vergangenen Speichervorfall untersuchen | sar | sar -r -f /var/log/sysstat/saDD | |
| Einen bestimmten Prozess tiefgehend analysieren | /proc/PID/smaps | cat /proc/PID/smaps | |
| Kontinuierliche Produktionsüberwachung | Prometheus + Node Exporter | — | |
| Container-Speicherlimits | cgroup-Dateisystem | cat /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 -ranstelle vonps aux --sort=-%mem, wenn Sie genaue prozessspezifische Speicherwerte benötigen — insbesondere auf Servern mit vielen Prozessen, die Bibliotheken teilen. - Installieren Sie
sysstatunmittelbar nach der Bereitstellung auf jedem Produktionsserver, um die historischesar-Datenerfassung zu aktivieren. - Setzen Sie
vm.swappiness=10dauerhaft in/etc/sysctl.confauf Datenbankservern, um die Swap-Nutzung zu minimieren. - Prüfen Sie
/proc/meminfoaufSlab– undDirty-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.
