Einführung: Herausforderungen wie die Anzahl der geöffneten Dateien in einer Produktionsumgebung sind heutzutage üblich. Da viele Anwendungen, die auf Java und Apache basieren, installiert und konfiguriert werden, kann dies zu zu vielen geöffneten Dateien, Dateideskriptoren usw. führen. Wenn dies das festgelegte Standardlimit überschreitet, kann es zu Problemen bei der Zugriffskontrolle und beim Öffnen von Dateien kommen. Viele Produktionsumgebungen kommen dadurch zum Stillstand.
Zum Glück haben wir in jedem Linux-basierten Server den Befehl „ulimit“, mit dem man die Anzahl der geöffneten Dateien / Konfigurationsdetails sehen / einstellen / abrufen kann. Dieser Befehl ist mit vielen Optionen ausgestattet und mit dieser Kombination kann man die Anzahl der geöffneten Dateien einstellen. Im Folgenden werden Schritt-für-Schritt-Befehle mit Beispielen im Detail erklärt.
Um zu sehen, wie hoch das aktuelle Limit für geöffnete Dateien in einem Linux-System ist
Um das Limit für geöffnete Dateien auf einem Linux-Server zu erhalten, führen Sie den folgenden Befehl aus:
# cat /proc/sys/fs/file-max146013
Die obige Nummer zeigt, dass der Benutzer die Datei „146013“ pro Benutzeranmeldesitzung öffnen kann.
# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906
Dies zeigt deutlich an, dass einzelne Linux-Betriebssysteme eine unterschiedliche Anzahl offener Dateien haben. Dies basiert auf Abhängigkeiten und Anwendungen, die in den jeweiligen Systemen ausgeführt werden.
Befehl ulimit :
Wie der Name schon sagt, wird ulimit (user limit) verwendet, um das Ressourcenlimit für angemeldete Benutzer anzuzeigen und festzulegen.Wenn wir den Befehl ulimit mit der Option -a ausführen, wird das Limit aller Ressourcen für den angemeldeten Benutzer ausgegeben. Lassen Sie uns nun „ulimit -a“ auf Ubuntu / Debian- und CentOS-Systemen ausführen,
Ubuntu / Debian-System,
shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
CentOS-System
shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
Wie wir hier sehen können, haben verschiedene Betriebssysteme unterschiedliche Grenzwerte festgelegt. Alle diese Grenzwerte können mit dem Befehl „ulimit“ konfiguriert / geändert werden.
Um das individuelle Ressourcenlimit anzuzeigen, übergeben Sie den einzelnen Parameter im Befehl ulimit, einige Parameter sind unten aufgeführt:
- ulimit -n –> Es wird die Anzahl der geöffneten Dateien angezeigt Limit
- ulimit -c –> Es zeigt die Größe der Kerndatei an
- umilit -u –> Es wird die maximale Benutzerprozessgrenze für den angemeldeten Benutzer angezeigt.
- ulimit -f -> Es wird die maximale Dateigröße angezeigt, die der Benutzer haben kann.
- umilit –m -> Es wird die maximale Speichergröße für angemeldete Benutzer angezeigt.
- ulimit -v -> Es wird die maximale Speichergröße angezeigt
Verwenden Sie die folgenden Befehle Überprüfen Sie die harten und weichen Grenzwerte für die Anzahl der geöffneten Dateien für den angemeldeten Benutzer
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
Wie kann das Problem behoben werden, wenn die Anzahl der maximalen Dateien erreicht wurde?
Nehmen wir an, unser Linux-Server hat die Grenze der maximalen Anzahl geöffneter Dateien erreicht und möchte diese Grenze systemweit erweitern, zum Beispiel möchten wir 100000 als Grenze der Anzahl geöffneter Dateien festlegen.
Verwenden Sie den Befehl sysctl, um fs zu übergeben.file-max Parameter auf Kernel on the fly, führen Sie den Befehl als Root-Benutzer,
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
Oben genannten Änderungen werden bis zum nächsten Neustart aktiv sein, so dass diese Änderungen persistent über den Neustart zu machen, bearbeiten Sie die Datei /etc/sysctl.conf und fügen Sie denselben Parameter hinzu,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
Datei speichern und beenden,
Führen Sie den folgenden Befehl aus, um die obigen Änderungen sofort ohne Abmelden und Neustart wirksam werden zu lassen.
root@ubuntu~]# sysctl -p
Überprüfen Sie nun, ob neue Änderungen wirksam sind oder nicht.
root@ubuntu~]# cat /proc/sys/fs/file-max100000
Verwenden Sie den folgenden Befehl, um herauszufinden, wie viele Dateideskriptoren derzeit verwendet werden:
# more /proc/sys/fs/file-nr1216 0 100000
Hinweis: – Der Befehl „sysctl -p“ wird verwendet, um die Änderungen ohne Neustart und Abmeldung zu übernehmen.
Ressourcenlimit auf Benutzerebene über Limit festlegen.conf-Datei
„/etc/sysctl.conf“ -Datei wird verwendet, um Ressourcenlimits systemweit festzulegen, aber wenn Sie Ressourcenlimits für bestimmte Benutzer wie Oracle, MariaDB und Apache festlegen möchten, kann dies über „/ etc / security / limits“ erreicht werden.conf“-Datei.
Stichprobengrenze.conf wird unten gezeigt,
root@ubuntu~]# cat /proc/sys/fs/file-max
Nehmen wir an, wir wollen hart und weich Grenze für die Anzahl der geöffneten Dateien für linuxtechi Benutzer und für Oracle Benutzer hart und weich Grenze für die Anzahl der offenen Prozess, bearbeiten Sie die Datei „/etc/security/ limits.conf“ und fügen Sie die folgenden Zeilen hinzu
# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024# hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096
Speichern & Beenden Sie die Datei.
Hinweis: Wenn Sie einer Gruppe anstelle von Benutzern ein Ressourcenlimit setzen möchten, kann dies auch über limit möglich sein.conf-Datei, anstelle des Benutzernamens , Typ @<Group_Name> und der Rest der Elemente wird gleich sein, Beispiel ist unten gezeigt,
# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024
Überprüfen Sie, ob neue Änderungen wirksam sind oder nicht,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
Hinweis: Ein anderer häufig verwendeter Befehl ist „lsof“, mit dem Sie herausfinden können, „wie viele Dateien derzeit geöffnet sind“. Dieser Befehl ist für Administratoren sehr hilfreich.
Fazit:
Wie im Einführungsabschnitt erwähnt, ist der Befehl „ulimit“ sehr leistungsfähig und hilft dabei, Anwendungsinstallationen zu konfigurieren und sicherzustellen, dass sie ohne Engpässe reibungsloser ablaufen. Dieser Befehl hilft bei der Festsetzung viele der Anzahl der Dateibeschränkungen in Linux-basierten Servern.