Kernel-Parameter mit sysctl tunen

Der Linux-Kernel hat hunderte einstellbarer Parameter. Für Server gibt es ein paar die sich fast immer lohnen anzupassen.

Aktuellen Wert lesen

sysctl net.ipv4.tcp_fin_timeout
sysctl -a | grep swappiness

Temporär setzen

sudo sysctl net.ipv4.tcp_fin_timeout=15

Gilt bis zum nächsten Neustart.

Dauerhaft in /etc/sysctl.conf

sudo nano /etc/sysctl.conf
# Swap weniger aggressiv nutzen
vm.swappiness = 10

# Mehr gleichzeitige Verbindungen erlauben
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# TIME_WAIT Verbindungen schneller freigeben
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1

# IP-Forwarding für Router/VPN (nur wenn nötig)
net.ipv4.ip_forward = 1

# SYN-Flood-Schutz
net.ipv4.tcp_syncookies = 1

# Maximale Anzahl offener Dateien (systemweit)
fs.file-max = 2097152

# inotify Watches für Tools wie Netdata oder Watchman
fs.inotify.max_user_watches = 524288

Sofort anwenden ohne Neustart.

sudo sysctl -p

Für Datenbank-Server

# Shared Memory für PostgreSQL
kernel.shmmax = 17179869184
kernel.shmall = 4194304

# Dirty Pages seltener auf Disk schreiben
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5

Für stark genutzte Webserver

net.ipv4.ip_local_port_range = 1024 65535
net.core.netdev_max_backlog = 65535

Die Standardwerte sind für Desktops ausgelegt. Auf einem dedizierten Server sind diese Anpassungen fast immer sinnvoll.