„Too many open files“ unter Debian

Wenn man seinen Server ein wenig zu sehr fordert, kann es zu der Fehlermeldung „too many open files“ kommen. In der Regel sind die limits recht konservativ eingestellt, so dass die Lösung einfach das Erhöhen der Limits ist.

Dazu passen wir zuerst das Limit für die User an indem wir in /etc/security/limits.conf an, indem wir folgende Zeile anfügen:

*    hard nofile 500000
*    soft nofile 500000
root hard nofile 500000
root soft nofile 500000

 

Danach widmen wir uns den pam-limits, die für Daemon-Prozesse relevant sind. Zu /etc/pam.d/common-session wird folgende Zeile hinzugefügt:
session required pam_limits.so

 

Und schließlich passen wir noch das systemweite Limit an. Es sollte in jedem Fall höher sein, als die verwendeten User-Limits.
Dazu wird folgende Zeile zu  /etc/sysctl.conf hinzugefügt:
fs.file-max = 2097152

Zur Übernahme des Wertes müss noch der Befehl sysctl -p ausgeführt werden.

 

Als letzten Schritt prüfen wir, ob alle gesetzten Werte auch übernommen wurden.

Systemlimimt: cat /proc/sys/fs/file-max
Userlimit (hard): ulimit -Hn
Userlimit (soft): ulimit -Sn
Userlimit für einen anderen User,
z.B. www-data: su - www-data -c 'ulimit -aHS' -s '/bin/bash'

Um das Limit eines laufenden Prozesses zu ermitteln, wird mit ps aux | grep prozessname zunächst die Prozess-Id ermittelt und dann mit cat /proc/<Prozess-Id>/limits das Limit ermittelt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.