Die Load Average ist eine der wichtigsten Kennzahlen für die Server-Performance. Sie zeigt, wie ausgelastet das System ist.
Was ist Load Average?
Die Load Average zeigt die durchschnittliche Anzahl von Prozessen, die auf CPU-Zeit warten oder gerade arbeiten.
Load Average: 1.50, 1.20, 0.80
│ │ │
│ │ └── Durchschnitt der letzten 15 Minuten
│ └──────── Durchschnitt der letzten 5 Minuten
└────────────── Durchschnitt der letzten 1 MinuteLoad abfragen
Schnelle Methoden
# uptime (einfachste Methode)
uptime
# Ausgabe: 14:32:07 up 5 days, load average: 1.50, 1.20, 0.80
# /proc/loadavg
cat /proc/loadavg
# Ausgabe: 1.50 1.20 0.80 2/150 12345
# w
w
# Zeigt auch eingeloggte UserDetaillierte Ansicht
# top (interaktiv)
top
# htop (bessere Oberfläche)
htop
# Load über Zeit
vmstat 1Load richtig interpretieren
Grundregel: Load vs. CPU-Kerne
Single-Core-System:
Load 1.0 = CPU zu 100% ausgelastet
Load 2.0 = 1 Prozess wartet
Quad-Core-System:
Load 4.0 = alle CPUs zu 100% ausgelastet
Load 8.0 = 4 Prozesse wartenCPU-Kerne ermitteln
# Anzahl logischer CPUs
nproc
# Oder detailliert
lscpu | grep "^CPU(s):"
# Oder
cat /proc/cpuinfo | grep processor | wc -lFaustregeln
| Load / Kerne | Zustand | |--------------|---------| | < 0.7 | Niedrig – System kaum ausgelastet | | 0.7 - 1.0 | Normal – gute Auslastung | | 1.0 - 2.0 | Erhöht – akzeptabel bei Spitzen | | > 2.0 | Hoch – Engpass wahrscheinlich | | > 5.0 | Kritisch – sofortiges Handeln nötig |
Beispiel:
- 4-Kern-Server mit Load 3.0 → 75% Auslastung (gut)
- 4-Kern-Server mit Load 8.0 → überlastet (Prozesse warten)
Load-Komponenten verstehen
Die Load besteht aus verschiedenen Zuständen:
Load = Running + Waiting for CPU + Waiting for I/O
(R) (R queue) (D state)Prozessstatus
# Mit ps anzeigen
ps aux
# Wichtige Status:
# R = Running (läuft oder bereit)
# S = Sleeping (wartet auf Event)
# D = Uninterruptible Sleep (wartet auf I/O)
# Z = ZombieD-State-Prozesse (I/O-Wait) erhöhen die Load, obwohl die CPU frei sein könnte!
Ursachen für hohe Load
1. CPU-Auslastung
# CPU-Verbrauch nach Prozess
top -o %CPU
# Oder
ps aux --sort=-%cpu | head -10Typische Verursacher:
- Rechenintensive Anwendungen
- Ineffiziente Skripte
- Malware/Cryptominer
2. I/O-Wait (Festplattenengpass)
# I/O-Wait prüfen
vmstat 1 5
# Spalte 'wa' zeigt I/O-Wait in %
# Detailliert
iostat -x 1
# %iowait und %util beachten
# Prozesse mit I/O
iotopTypische Verursacher:
- Langsame Festplatten
- Datenbankabfragen
- Backup-Prozesse
- Log-Schreiben
3. RAM-Mangel (Swapping)
# Swap-Nutzung
free -h
# Swap-Aktivität
vmstat 1
# si/so Spalten zeigen Swap-I/OWenn Swap aktiv genutzt wird, steigt die Load durch I/O-Wait.
4. Zu viele Prozesse
# Prozessanzahl
ps aux | wc -l
# Prozesse pro User
ps -eo user | sort | uniq -c | sort -rn
# Fork-Bomben erkennen
ps aux | awk '{print $11}' | sort | uniq -c | sort -rn | headDiagnose-Workflow
Schritt 1: Übersicht
# Load und Uptime
uptime
# RAM-Status
free -h
# Schnelle Prozess-Übersicht
top -bn1 | head -20Schritt 2: CPU oder I/O?
# vmstat zeigt beides
vmstat 1 5
# Ausgabe interpretieren:
# r = Prozesse, die auf CPU warten
# b = Prozesse in I/O-Wait (blocked)
# wa = I/O-Wait %
# us/sy = User/System CPU %procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 500000 50000 200000 0 0 10 20 100 200 25 10 60 5 0r=2, b=0: CPU-Last, kein I/O-Problemr=0, b=5: I/O-Problem (Prozesse blockiert)wa=30: 30% I/O-Wait, Festplatte ist Flaschenhals
Schritt 3: Verursacher finden
Bei CPU-Last:
# Top CPU-Verbraucher
ps aux --sort=-%cpu | head -10Bei I/O-Last:
# I/O pro Prozess
iotop -aoP
# Oder
pidstat -d 1 5Schritt 4: Prozess analysieren
# Details zu Prozess
ps -p PID -o pid,ppid,user,%cpu,%mem,etime,cmd
# Offene Dateien
lsof -p PID
# System-Calls
strace -p PID -cLösungen
CPU-Last reduzieren
# Prozess beenden
kill PID
# Sanft beenden
kill -15 PID
# Erzwungen beenden
kill -9 PID
# Prozess-Priorität senken
renice +10 -p PID
# Prozess auf einen CPU-Kern beschränken
taskset -c 0 -p PIDI/O-Last reduzieren
# I/O-Priorität senken
ionice -c 3 -p PID
# Prozess mit niedriger I/O-Prio starten
ionice -c 2 -n 7 backup-script.shCron-Jobs entzerren
# Statt alle um 00:00
0 0 * * * backup.sh
0 0 * * * report.sh
0 0 * * * cleanup.sh
# Besser zeitlich verteilt
0 0 * * * backup.sh
30 0 * * * report.sh
0 1 * * * cleanup.shMonitoring einrichten
Einfaches Skript
#!/bin/bash
# /usr/local/bin/load-check.sh
THRESHOLD=4.0
LOAD=$(cat /proc/loadavg | awk '{print $1}')
if (( $(echo "$LOAD > $THRESHOLD" | bc -l) )); then
echo "WARNUNG: Load ist $LOAD" | mail -s "High Load" admin@example.com
fiMit Cron
*/5 * * * * /usr/local/bin/load-check.shGrafische Darstellung
- Netdata: Echtzeit-Monitoring
- Grafana + Prometheus: Historische Daten
- htop: Interaktive Konsole
Zusammenfassung
| Kennzahl | Befehl | Bedeutung | |----------|--------|-----------| | Load Average | uptime | Gesamtlast | | CPU-Nutzung | top, ps | Prozessor-Auslastung | | I/O-Wait | vmstat, iostat | Festplatten-Engpass | | RAM/Swap | free -h | Speicherstatus | | Pro Prozess | iotop, top | Verursacher finden |
Fazit
Die Load Average ist ein wichtiger Indikator, aber nur aussagekräftig im Verhältnis zur CPU-Anzahl. Eine Load von 4.0 auf einem 8-Kern-Server ist unkritisch, auf einem Single-Core-System problematisch. Unterscheiden Sie zwischen CPU-Last und I/O-Wait – die Lösungen sind unterschiedlich. Bei I/O-Problemen hilft mehr CPU nicht, Sie brauchen schnellere Festplatten oder weniger I/O-intensive Prozesse.