SSH-Verbindungsproblem: Keine Verbindung zum Server möglich
Anleitung zur Behebung von SSH-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für SSH-Port erstellen und Fehlerbehebungsschritte.
Anleitung zur Diagnose hoher CPU- und RAM-Auslastung auf Servern mit top, htop, ps-Befehlen, OOM-Killer-Mechanismus, Prozessanalyse und Ressourcenoptimierung.
Hohe CPU- oder RAM-Auslastung auf Ihrem Server kann zu Leistungseinbußen, Dienstunterbrechungen und sogar dazu führen, dass der Server nicht mehr reagiert. In dieser Anleitung untersuchen wir die Tools und Methoden zur Identifizierung ressourcenintensiver Prozesse und zur Lösung des Problems.
top ist das grundlegendste Tool zur Echtzeit-Überwachung von Systemressourcen:
top
Wichtige Felder:
Nützliche Tastenkürzel:
P — Nach CPU-Auslastung sortierenM — Nach Speicherauslastung sortierenk — Prozess beenden (PID eingeben)1 — Jeden CPU-Kern einzeln anzeigenc — Vollständige Befehlszeile anzeigenhtop ist eine erweiterte und benutzerfreundlichere Version von top:
# Installation
sudo apt install htop -y
# Ausführen
htop
htop-Vorteile:
# Top 10 Prozesse nach CPU-Auslastung
ps aux --sort=-%cpu | head -11
# Top 10 Prozesse nach RAM-Auslastung
ps aux --sort=-%mem | head -11
# Prozesse eines bestimmten Benutzers
ps -u www-data --sort=-%cpu
# Prozessbaum-Ansicht
ps auxf
# Echtzeit-CPU-Auslastung
mpstat -P ALL 1 5
# CPU-Auslastung pro Prozess (5-Sekunden-Intervalle)
pidstat -u 5 3
# CPU-Auslastung eines bestimmten Prozesses
pidstat -p PID_NUMMER 1
# Historische CPU-Daten mit sar
sar -u 1 10
# CPU-Auslastung der letzten 24 Stunden
sar -u -f /var/log/sysstat/sa$(date +%d)
# Load-Average-Prüfung
uptime
cat /proc/loadavg
Der Load-Average-Wert sollte mit Ihrer CPU-Kernanzahl verglichen werden. Auf einem 4-Kern-Server bedeutet ein Load Average von 4,0 eine 100%ige CPU-Auslastung. 8,0 bedeutet Überlastung.
# Detaillierte Prozessinformationen
ps -p PID_NUMMER -o pid,ppid,user,%cpu,%mem,etime,cmd
# Offene Dateien eines Prozesses
lsof -p PID_NUMMER
# Systemaufrufe eines Prozesses
strace -p PID_NUMMER -c
# Prozess-Threads
ps -T -p PID_NUMMER
# Allgemeiner Speicherstatus
free -h
# Detaillierte Speicherinformationen
cat /proc/meminfo
# Speichernutzungsübersicht
vmstat 1 5
free -h Ausgabe lesen:
total used free shared buff/cache available
Mem: 16Gi 8.2Gi 1.1Gi 256Mi 6.7Gi 7.2Gi
Swap: 4.0Gi 512Mi 3.5Gi
Unter Linux kann der "freie" Speicher niedrig erscheinen, da das System freien Speicher als Disk-Cache verwendet. Der tatsächlich verfügbare Speicher steht in der Spalte "available".
# Sortierung nach RSS (Resident Set Size)
ps aux --sort=-rss | head -11
# Detaillierte Speicheranalyse mit smem
sudo apt install smem -y
smem -t -k -s rss
# Speichernutzung pro Prozess
pmap -x PID_NUMMER
# Prozesse, die Swap verwenden
for file in /proc/*/status; do
awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file
done | sort -k 2 -n -r | head -10
# Swap-Aktivität überwachen
vmstat 1 10
# Swappiness-Wert
cat /proc/sys/vm/swappiness
# Swappiness setzen (temporär)
sudo sysctl vm.swappiness=10
# Swappiness setzen (permanent)
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
Der Linux-Kernel aktiviert den OOM (Out of Memory) Killer, wenn der Speicher erschöpft ist, und beendet den Prozess mit dem höchsten Speicherverbrauch.
# Nach OOM-Killer-Ereignissen suchen
dmesg | grep -i "oom\|out of memory"
# OOM in Systemlogs
journalctl -k | grep -i oom
# Letzte OOM-Ereignisse
grep -i 'oom' /var/log/syslog
# OOM-Score eines Prozesses
cat /proc/PID_NUMMER/oom_score
# Kritischen Prozess vor OOM Killer schützen
echo -1000 > /proc/PID_NUMMER/oom_score_adj
# OOM-Schutz im systemd-Dienst
[Service]
OOMScoreAdjust=-1000
Wenn der OOM Killer einen Prozess beendet, deutet dies auf ein ernstes Speicherproblem auf Ihrem Server hin. OOM-Schutz hinzuzufügen, ohne die Ursache zu finden, löst das Problem nicht.
# Mit Nice-Wert starten (-20 höchste, 19 niedrigste Priorität)
nice -n 10 ./lange-aufgabe.sh
# Priorität eines laufenden Prozesses ändern
renice -n 15 -p PID_NUMMER
# Sanftes Beenden (SIGTERM)
kill PID_NUMMER
# Erzwungenes Beenden (SIGKILL)
kill -9 PID_NUMMER
# Nach Name beenden
killall prozess_name
pkill -f "prozess_muster"
#!/bin/bash
CPU_THRESHOLD=90
MEM_THRESHOLD=90
LOG_FILE="/var/log/resource-monitor.log"
while true; do
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
CPU_USAGE=$(top -bn1 | grep 'Cpu(s)' | awk '{print $2}' | cut -d'.' -f1)
if [ "$CPU_USAGE" -gt "$CPU_THRESHOLD" ]; then
echo "[$TIMESTAMP] WARNUNG: CPU-Auslastung $CPU_USAGE%" >> $LOG_FILE
ps aux --sort=-%cpu | head -6 >> $LOG_FILE
fi
MEM_USAGE=$(free | grep Mem | awk '{printf("%.0f", $3/$2 * 100)}')
if [ "$MEM_USAGE" -gt "$MEM_THRESHOLD" ]; then
echo "[$TIMESTAMP] WARNUNG: RAM-Auslastung $MEM_USAGE%" >> $LOG_FILE
ps aux --sort=-%mem | head -6 >> $LOG_FILE
fi
sleep 60
done
Hohe CPU- und RAM-Auslastung sind kritische Probleme, die die Serverleistung direkt beeinflussen. Mit Tools wie top, htop, ps und vmstat können Sie problematische Prozesse identifizieren, Prioritäten mit nice/renice anpassen und Prozesse bei Bedarf beenden. Die regelmäßige Überprüfung der OOM-Killer-Logs ist wichtig für die frühzeitige Erkennung von Speicherproblemen.
Load Average zeigt die durchschnittliche Systemlast der letzten 1, 5 und 15 Minuten. Es sollte mit der CPU-Kernanzahl verglichen werden. Auf einem 4-Kern-Server bedeutet ein Load Average von 4,0 eine 100%ige Auslastung. Dauerhaft über der Kernanzahl deutet auf Überlastung hin.
Nein, Linux verwendet freien Speicher als Disk-Cache. Der tatsächlich verfügbare Speicher steht in der Spalte 'available' der free -h Ausgabe. Wenn dieser Wert niedrig ist, liegt ein Speicherproblem vor.
Der OOM Killer beendet den Prozess mit dem höchsten oom_score, was typischerweise der mit dem meisten Speicherverbrauch ist. Sie können kritische Dienste schützen, indem Sie oom_score_adj auf -1000 setzen.
Drücken Sie 'c' in top, um die vollständige Befehlszeile anzuzeigen. Drücken Sie auch 'H', um Threads zu sehen. Wenn Kernel-Threads (in eckigen Klammern) hohe CPU verwenden, könnte es ein Hardware- oder Treiberproblem sein.
Identifizieren Sie zunächst, welche Prozesse Swap verwenden. Wenn RAM unzureichend ist, upgraden Sie Ihren Serverplan. Sie können Swappiness reduzieren (vm.swappiness=10), damit das System weniger Swap verwendet. Die eigentliche Lösung ist jedoch ausreichend RAM.
Anleitung zur Behebung von SSH-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für SSH-Port erstellen und Fehlerbehebungsschritte.
Anleitung zur Behebung von RDP-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für RDP-Port erstellen und Fehlerbehebungsschritte.
Anleitung zum Netzwerktest mit WinMTR und Linux MTR, ICMP-Filterregel erstellen und Ergebnisse an das Support-Team senden. Paketverlust und Latenz diagnostizieren.