Ich habe einen langen Prozess bei Debian. Irgendwann tritt ein Fehler auf:
Zu viele offene Dateien.
Laufen:
ulimit -a
zeigt an:
offene Dateien (-n) 1024
Ich möchte die Anzahl der geöffneten Dateien zweimal erhöhen. Nach der Ausführung
ulimit -n 2048
Das Limit ist bis zum Ende meiner Sitzung aktiv. Dies gilt nicht für die Aufgabe.
Wie kann ich die Anzahl der geöffneten Dateien dauerhaft erhöhen?
quelle
Es gibt auch ein "total max" an offenen Dateien im Kernel. Sie können die aktuelle Einstellung überprüfen mit:
Und setzen Sie einen neuen Wert mit:
Wenn Sie die Konfiguration zwischen den Neustarts beibehalten möchten, fügen Sie hinzu
zu
So überprüfen Sie die aktuelle maximale Dateiverwendung:
quelle
0
, die Anzahl der zugewiesenen Dateizugriffsnummern genau der Anzahl der verwendeten Dateizugriffsnummern entspricht.49152 0 18446744073709551615
. Ich verstehe nicht, warum die ersten beiden Spalten nicht die dritte addieren. Und wenn ich 1,8 Billionen Billionen zur Verfügung habe, verstehe ich nicht, wie ich sie alle verwendet habe.Wie bereits erwähnt, können Sie in /etc/security/limits.conf pro Benutzer oder Gruppe bestimmte Grenzwerte festlegen.
Hinweis: ulimit -n zeigt das weiche Limit an.
zeigt dir die harte Grenze.
Dies macht die Ausgabe von ulimit -a und ulimit -n ziemlich verwirrend, wenn Sie zum Beispiel die Anzahl der Dateien von 1024 auf 4096 erhöhen, da Sie die Ausgabe mit dem harten Limit erwarten würden, aber immer noch 1024 sehen, welches das weiche ist Grenze.
Denken Sie auch daran, dass diese Beschränkungen pro Anmeldung gelten. Melden Sie sich daher erneut in einer neuen Shell an und überprüfen Sie Ihre Änderungen. Erwarten Sie nicht, dass sie an vorhandene Anmeldungen weitergegeben werden.
quelle
Beachten Sie, dass das Setzen von ulimits in /etc/security/limits.conf nicht funktioniert, wenn Sie Ihren Prozess durch Starten-Stoppen-Daemon ausführen. Wenn Sie beispielsweise das Limit für offene Dateien für Tomcat auf 20000 erhöhen möchten, müssen Sie diese Zeilen hinzufügen, um
/etc/default/tomcat
:Ich bin auf diesem Problem unter Debian 6.0.4 gestoßen. Für andere Prozesse sollten die gegebenen Antworten hilfreich sein.
quelle
Es hängt davon ab, wie Sie Ihren langfristigen Prozess starten. Wenn es beim Booten gestartet wird (über /etc/rcX.d/* Skripte), müssen Sie einen ulimit-Aufruf in Ihr Startskript einfügen, da das Standardlimit vom Kernel festgelegt wird und es nicht angepasst werden kann, ohne es neu zu kompilieren.
Using
/etc/security/limits.conf
könnte funktionieren, wenn Siecron
es zum Beispiel mit einem Eintrag wie diesem starten:Das sollte funktionieren, da /etc/pam.d/cron pam_limits.so aktiviert.
quelle
Sie können dies in /etc/security/limits.conf hinzufügen
Speichern und neu starten.
quelle
Ein sehr netter Befehl ist,
ulimit -n
aber es gibt ein Problem mit zu vielen Verbindungen und zu vielen offenen Dateien:quelle
ulimit -a
, nichtulimit -n
.