Wie kann ich das Limit für offene Dateien für alle Prozesse erhöhen?

32

Ich kann ulimit verwenden, aber ich denke, das betrifft nur meine Shell-Sitzung. Ich möchte, dass das Limit für alle Prozesse erhöht wird. Dies ist auf Red Hat.

Gegenmodus
quelle
Welche Version von Red Hat übrigens? RHEL5?
Mattdm

Antworten:

26

In Justins Antwort erfahren Sie, wie Sie die Anzahl der insgesamt verfügbaren offenen Dateien für das gesamte System erhöhen können. Aber ich denke, Sie fragen sich, wie Sie das Pro-Benutzer-Limit global erhöhen können. Die Antwort darauf besteht darin, die folgenden Zeilen hinzuzufügen /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Wo das * alle Benutzer bedeutet.)

In dieser Datei selbst und in befindet sich eine zusammenfassende Dokumentation man limits.conf. Dies erfolgt über das pam_limits.soModul, das für verschiedene in konfigurierte Dienste aufgerufen wird /etc/pam.d/.

Und ich muss zugeben, ich habe keine Ahnung, woher diese 1024-Standardeinstellung kommt. Und glauben Sie mir, ich habe geschaut. Ich habe sogar versucht, ohne das Modul pam_limits zu konfigurieren, und es ist immer noch da. Es muss irgendwo fest programmiert sein, aber ich bin mir nicht ganz sicher, wo.

mattdm
quelle
2
Hmm ... ich habe das richtig eingestellt. Beenden Sie SSH und kehren Sie zurück, und mein weiches Limit ist immer noch auf 1024 eingestellt. Fehlt mir etwas, um dies "aktiv" zu machen? Vielen Dank.
Joshua Pinter
@mattdm - Es ist erwähnenswert, dass sich die erwähnte Datei auf einigen Linux-Distributionen unter /etc/limits.conf befindet
Guy Avraham
13

Gemäß dem Artikel Linux-Erhöhung der maximalen Anzahl offener Dateien / Dateideskriptoren (FD) können Sie das Limit für geöffnete Dateien erhöhen, indem Sie einen Eintrag zu hinzufügen /etc/sysctl.conf.

Fügen Sie eine config-Direktive wie folgt hinzu:

fs.file-max = 100000

Speichern und schließen Sie dann die Datei. Benutzer müssen sich abmelden und erneut anmelden, damit die Änderungen wirksam werden, oder sie können einfach den folgenden Befehl eingeben:

# sysctl -p

Sie können Ihre Einstellungen auch mit dem folgenden Befehl überprüfen:

# cat /proc/sys/fs/file-max
Justin Ethier
quelle
Ich bin skeptisch, dass ich mich für diese bestimmte Einstellung, die systemweit gilt, aus- und wieder anmelden muss. (Das gilt für so ziemlich alles in sysctl ...)
mattdm
13

Erhöhen Sie die maximale Anzahl an offenen ulimit-Dateien unter Linux

1.Schritt: Öffnen Sie die sysctl.conf und fügen Sie diese Zeile hinzu fs.file-max = 65536

$ vi /etc/sysctl.conf

neue Zeile hinzufügen und

fs.file-max = 65536

speichern und schließen.

2.Schritt:

$ vi /etc/security/limits.conf

und fügen Sie unten das erwähnte hinzu

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

speichern und beenden, max. offene Datei prüfen ulimit

# ulimit -a

....
open files                      (-n) 65535
minhas23
quelle
6

Aber wenn Sie versuchen, die maximale Anzahl offener Dateien eines Dienstes wie MariaDB oder etwas anderem (mit systemd ) zu erhöhen , müssen Sie dies direkt in der Datei .service tun

/lib/systemd/system/<servicename>.service

Wird ungefähr so ​​aussehen:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

Die vollständige Antwort ist hier: Zunehmende Anzahl von Prozessen, die von systemd unter CentOS 7 gestartet wurden

Matheus Baldasso
quelle
Dies muss gewürdigt werden, da die Allgegenwart von systemdzusammen mit den laufenden Änderungen im gesamten Linux-Ökosystem zunimmt. Ich würde jedoch vorschlagen, die Antwort auf cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/diese Datei zu bearbeiten und die Änderungen daran vorzunehmen, anstatt die systemweite Servicedatei, die vom Paket bereitgestellt wird.
ILMostro_7
3

ZUSCHLAG:

Sie finden die Konfiguration möglicherweise an einer anderen Stelle: /etc/security/limits.d/*.conf

Ich musste es ändern. Ohne ging es nicht. Das Format ist dasselbe wie fürlimits.conf

Waldemar Wosiński
quelle
Ich musste diese Datei auch aktualisieren, damit die Einstellungen für unsere CentOS-Server vollständig übernommen werden.
John Eisbrener