System Performance Tuning: ulimits, file descriptors, sysctl für High Concurrency

In hochskalierenden Linux-Umgebungen ist das richtige System Performance Tuning entscheidend, um eine hohe Anzahl gleichzeitiger Verbindungen (High Concurrency) zuverlässig zu bedienen. Standardwerte von ulimits, File Descriptors und Kernel-Parametern über sysctl reichen oft nicht aus, um Engpässe zu vermeiden. Dieser Leitfaden zeigt praxisnah, wie Sie Ihr System für maximale Stabilität und Performance optimieren können.

File Descriptors und ulimits

File Descriptors (FDs) sind die Schnittstelle zwischen Anwendungen und dem Betriebssystem für Dateien, Sockets und Pipes. Bei hoher Last kann ein Mangel an FDs zu Fehlern wie Too many open files führen.

Maximale File Descriptors prüfen

ulimit -n
cat /proc/sys/fs/file-max

Erhöhung temporär und permanent

  • Temporär für die aktuelle Shell:
    ulimit -n 65535
  • Permanente Einstellung für Benutzer:
    echo "username soft nofile 65535" >> /etc/security/limits.conf
    echo "username hard nofile 65535" >> /etc/security/limits.conf
  • Permanente Systemweite Maximalwerte:
    echo "fs.file-max = 2097152" >> /etc/sysctl.conf
    sysctl -p

Prozesse und Threads

Bei hoher Last kann die Anzahl von Prozessen oder Threads limitierend sein. Linux verwendet ulimit -u für die maximale Anzahl pro User.

Limits prüfen und setzen

ulimit -u
echo "username soft nproc 65535" >> /etc/security/limits.conf
echo "username hard nproc 65535" >> /etc/security/limits.conf

Kernel Tuning mit sysctl

Viele Parameter im Netzwerk- und IO-Bereich können über sysctl optimiert werden. Dies ist besonders wichtig für Systeme mit hoher Parallelität.

Netzwerk-Parameter

  • Maximale Anzahl von TCP-Verbindungen:
    sysctl -w net.core.somaxconn=65535
    sysctl -w net.ipv4.tcp_max_syn_backlog=4096
  • Ephemeral Ports:
    sysctl -w net.ipv4.ip_local_port_range="1024 65535"
  • TCP Reuse und Recycling:
    sysctl -w net.ipv4.tcp_tw_reuse=1
    sysctl -w net.ipv4.tcp_tw_recycle=1
  • TCP Keepalive Interval:
    sysctl -w net.ipv4.tcp_keepalive_time=300

IO-Parameter

  • Maximale offene Dateien pro Prozess:
    sysctl -w fs.file-max=2097152
  • Swappiness reduzieren für Performance:
    sysctl -w vm.swappiness=10
  • Dirty Ratio zur Kontrolle von Write-Backs:
    sysctl -w vm.dirty_ratio=15
    sysctl -w vm.dirty_background_ratio=5

IO- und Netzwerk-Queues

Für High Concurrency sollten Netzwerkkarten und Storage-Subsysteme korrekt dimensioniert werden. Linux erlaubt Anpassungen über net.core.netdev_max_backlog und block device queue Parameter.

Beispiel für Netzwerk-Queues

sysctl -w net.core.netdev_max_backlog=5000
ethtool -G eth0 rx 4096 tx 4096

Beispiel für Storage-Queues

cat /sys/block/sda/queue/nr_requests
echo 1024 > /sys/block/sda/queue/nr_requests

Monitoring und Validierung

Nach Anpassungen sollten Limits und Kernel-Parameter überwacht werden, um Engpässe frühzeitig zu erkennen.

Check offenes File Descriptor Limit

lsof | wc -l
cat /proc/sys/fs/file-nr

Netzwerk Monitoring

ss -s
netstat -s | grep tcp
watch -n1 'ss -tn state established'

Kernel Parameter prüfen

sysctl -a | grep somaxconn
sysctl -a | grep tcp_max_syn_backlog

Best Practices

  • Alle Änderungen in /etc/sysctl.conf und /etc/security/limits.conf dokumentieren
  • Schrittweise Anpassungen testen und überwachen
  • uLimits auf User- und Prozess-Ebene konsistent setzen
  • Regelmäßige Performance-Messungen mit Tools wie htop, iostat und sar
  • Bei Produktionssystemen Änderungen während Wartungsfenstern durchführen

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles