Wir haben eine CentOS-Box, mit der ich versuche, die maximale Anzahl von Dateien zu erhöhen, die ein Benutzer öffnen kann. Momentan wenn ich renne ulimit -Sn
bekomme 1024
und ulimit -Hn
gebe ich 4096
. Ich brauche diese Zahl um 6000.
Darin /etc/sysctl.conf
habe ich gesetzt fs.file-max = 100000
. In habe /etc/security/limits.conf
ich folgendes eingestellt:
username soft nofile 6000
username hard nofile 65535
Ich habe mich abgemeldet und wieder angemeldet, sehe username
aber immer noch keine Änderungen. Was brauche ich, um diesen Wert zu ändern?
Alles was ich habe /etc/security/limits.d
ist 90-nproc.conf
. Ich habe auch sichergestellt, dass ulimit nicht in meinem .bash_profile oder .bashrc aufgerufen wird.
Beim Ausführen sysctl -p
werden die gewünschten Einstellungen ausgespuckt und der gewünschte Wert fs.file-max
angezeigt. Aber wenn ich renne ulimit -Sn
, bekomme ich 1048. Wenn ich versuche zu rennen, sysctl --system
bekomme ich error: Unknown parameter "--system"
.
Antworten:
Zum zwingen
/etc/sysctl.conf
nochmal gelesen zu werden laufensysctl -p
.Die Datei
/etc/security/limits.conf
wird von Login-Shells gelesen und Sie sollten aktive Sitzungsfenster schließen, wenn Sie sich in der GUI befinden. Bei Remoteanmeldungen wird die erneute Anmeldung wirksam.quelle
fs.file-max
ist die maximale Anzahl offener Dateien auf dem System. Es ist eine harte Grenze und wirdulimit
in Ihrem Fall nicht von Anrufen widergespiegelt .Wie in einem anderen Poster bereits erwähnt, muss sysctl den Wert im laufenden Kernel einstellen. Es gibt verschiedene Möglichkeiten, den Wert ohne Neustart festzulegen:
IMHO ist die letzte Methode die beste, da sie die Reihenfolge reproduziert, in der die Einstellungen während des Startvorgangs angewendet werden (und daher wird es offensichtlich, wenn Sie einen Konflikt haben).
Hinweis: Ich bin mir nicht sicher, welche CentOS-Version Sie verwenden, aber zumindest unter 7 ist ein Problem aufgetreten, bei dem Dracut die initramfs aus irgendeinem Grund (z. B. bei der Installation eines neuen Kernel-Moduls) neu erstellt und kopiert den Inhalt von /etc/sysctl.* in das initramfs, das dann von systemd-sysctl in dieser Phase ausgeführt wird, auch wenn Sie diese Einträge später aus /etc/sysctl.conf löschen.
In meiner Umgebung habe ich das systemd-Dracut-Modul so bearbeitet, dass /etc/sysctl.* aus dieser Umgebung ausgeschlossen wird (da diese Einstellungen festgelegt werden, sobald das rootfs eingehängt wird und systemd-sysctl erneut ausgeführt wird). Es ist nur eine GOTCHA, auf die Sie stoßen könnten.
quelle