Wie kann ich den Wert von ulimit dauerhaft einstellen?

17

Auf Debian Wheezy ulimit -agibt es:

open files                      (-n) 1024

Ich füge dies zu /etc/security/limits.conf hinzu

*                hard    nofile          64000

dann neu starten.

Und ulimit -atrotzdem gibt es eine maximale Anzahl offener Dateien von 1024. Kann jemand etwas Licht darauf werfen?

Icu
quelle
Ist dies möglicherweise ein virtueller Host?
Dennis Nolte
Nein, es ist ein Mongodb-Server
Icu

Antworten:

13

Option eins: Sie haben das Softlimit auch nicht höher eingestellt.

Mögliche Lösung:

in /etc/security/limits.conf hinzufügen

* soft nofile 2048

testen mit

ulimit -n 2048 

Option 2: Sie sind als Benutzer angemeldet und in einer "config" -Datei (profile, bashrc, so ähnlich) ist das Softlimit auf einen niedrigeren Wert festgelegt.

Mögliche Lösung zB grep for ulimit in Ihrem etc Ordner und / oder Home Ordner.

Warnung: Abhängig von der Anzahl der Dateien / Verzeichnisse, die sich dort befinden, möchten Sie möglicherweise nur bestimmte Verzeichnisse / Dateien berücksichtigen

ps: es gibt viele ähnliche fragen, die du vielleicht nachlesen möchtest.

Speziell Hard vs Soft Limit

Lesen Sie hier mögliche andere Lösungen, die ausführlicher auf " Zu viele offene Dateien" eingehen

Dennis Nolte
quelle
Eigentlich habe ich versucht, nur das harte Limit auf 64000 zu setzen. Also war das weiche Limit immer noch auf 1024. Jetzt habe ich versucht, ein weiches Limit auf 64000 + hart = 72000 zu setzen. Aber es hat nicht funktioniert. Ich habe auch "* - nofile 64000" ausprobiert und bekomme das gleiche Ergebnis.
Icu
Nachdem ich "Too Many Open Files" gelesen hatte, dachte ich, eine Kernel-Einstellung würde die limits.conf-Einstellungen außer Kraft setzen, aber: "fs.file-max = 4933738"
Icu
@Icu versuchen die Antworten von diesem auch: serverfault.com/questions/93234/… könnte auf Ihre Shell bezogen sein
Dennis Nolte
Ich habe 'session required pam_limits.so' zu /etc/pam.d/other und common-session hinzugefügt, aber es hilft nicht ... Als Alternative habe ich meinem Init-Skript ein 'ulimit -n' hinzugefügt und es funktioniert aber ich frage mich, warum ich nicht die richtigen Werte in meiner Shell bekommen kann.
Icu
19

Es gibt einen Fehler in Debian. Zum Vergrößern ulimitmüssen Sie dies in die /etc/pam.d/common-sessionDatei einfügen:

session required pam_limits.so

und dazu /etc/security/limits.conf:

*               soft    nofile          65535
*               hard    nofile          65535

Starten Sie dann das System neu.

jpyzio
quelle
1
Ich brauche keine Änderungen an der /etc/pam.d/common-session Datei . Es funktionierte nur durch Hinzufügen der anderen beiden Zeilen zu der limits.confDatei :-)
Francesco Casula
Sie sollten nicht neu starten müssen.
David Goodwin
Das ist brutal. Auf Debian 7, und das funktioniert nicht. Ich bin mir nicht sicher, was ich tun soll :( - Möglicherweise öffne ich eine neue Frage
NiCk Newman
12
Boom. *Platzhalter funktioniert nicht für root. Ich fügte hinzu, rootanstatt *, und es funktioniert. Vielen Dank!
NiCk Newman
@FrancescoCasula - welche Version von Debian war das? Ich versuche nur herauszufinden, ob dies wirklich ein Fehler ist und ob er noch existiert ...
UpTheCreek
0

In meinem Fall von Apache unter Debian 10 hat das oben Genannte nicht geholfen, obwohl dies funktioniert hat:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

Ich habe nachgefragt bei:

cat /proc/$pid/limits

..wo $pidist die Prozess-ID eines der Apache-Prozesse.

Neil Stockbridge
quelle