Einführung: Herausforderungen wie die Anzahl offener Dateien in einer beliebigen Produktionsumgebung sind heutzutage alltäglich geworden. 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 mit der Zugriffskontrolle und zum Öffnen von Dateien kommen Herausforderungen. Viele Produktionsumgebungen kommen dadurch zum Erliegen.
Glücklicherweise haben wir „ulimit ”-Befehl in jedem Linux-basierten Server, mit dem man die Anzahl der geöffneten Status-/Konfigurationsdetails von Dateien 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 finden Sie Schritt-für-Schritt-Befehle mit ausführlich erläuterten Beispielen.
Um zu sehen, was das aktuelle Limit für offene Dateien in jedem Linux-System ist
Um das Limit für offene Dateien auf einem beliebigen Linux-Server zu erhalten, führen Sie den folgenden Befehl aus,
[[email protected] ~]# cat /proc/sys/fs/file-max146013
Die obige Zahl zeigt, dass der Benutzer die Datei „146013“ pro Benutzer-Anmeldesitzung öffnen kann.
[[email protected] ~]# cat /proc/sys/fs/file-max149219[[email protected] ~]# cat /proc/sys/fs/file-max73906
Dies zeigt deutlich, dass einzelne Linux-Betriebssysteme eine unterschiedliche Anzahl geöffneter Dateien haben. Dies basiert auf Abhängigkeiten und Anwendungen, die in den jeweiligen Systemen ausgeführt werden.
ulimit-Befehl :
Wie der Name schon sagt, wird ulimit (Benutzerlimit) 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 gedruckt. Lassen Sie uns nun „ulimit -a ausführen ” auf Ubuntu/Debian- und CentOS-Systemen,
Ubuntu / Debian-System ,
[E-Mail-geschützt] ~}$ ulimit -acore Dateigröße (Blöcke, -c) 0 Datensegmentgröße (KByte, -d) unbegrenzte Planungspriorität (-e) 0 Dateigröße (Blöcke, -f) unbegrenzt ausstehende Signale 5731MAX gesperrtem Speicher (KBYTES, -L) 64MAX -Speichergröße (KBYTES, -M) UnlimitedOpen -Dateien (-n) 1024 Rohrgröße (512 Bytes, -p) 8PoSix -Nachrichten -Warteschlangen (Bytes, -Q) 819200real -Zeit -Priorität (-r ) 0Stapelgröße (kByte, -s) 8192CPU-Zeit (Sekunden, -t) unbegrenzt max. Benutzerprozesse (-u) 5731virtueller Speicher (kByte, -v) unbegrenzt DateisperrenCentOS-System
[E-Mail-geschützt] ~}$ ulimit -acore Dateigröße (Blöcke, -c) 0 Datensegmentgröße (KByte, -d) unbegrenzte Planungspriorität (-e) 0 Dateigröße (Blöcke, -f) unbegrenzt ausstehende Signale 5901 max. gesperrter Speicher (kByte, -l) 64 max. Speichergröße (kByte, -m) unbegrenzt geöffnete Dateien (-n) 1024-Pipe-Größe (512 Byte, -p) 8 POSIX-Nachrichtenwarteschlangen (Byte, -q) 81920 Echtzeit Priorität 0Stapelgröße (KByte, -s) 8192CPU-Zeit (Sekunden, -t) Unbegrenzt max. Benutzerprozesse (-u) 5901 Virtueller Speicher (KByte, -v) Unbegrenzt Dateisperren > UnbegrenztWie wir hier sehen können, haben verschiedene Betriebssysteme unterschiedliche Grenzwerte festgelegt. Alle diese Limits können mit dem Befehl „ulimit“ konfiguriert/geändert werden.Um das individuelle Ressourcenlimit anzuzeigen, übergeben Sie dann den individuellen Parameter im ulimit-Befehl, einige der Parameter sind unten aufgeführt:
- ulimit -n –> Es wird das Limit für die Anzahl der geöffneten Dateien angezeigt
- ulimit -c –> Zeigt die Größe der Kerndatei an
- umilit -u –> Es zeigt das maximale Benutzerprozesslimit für den angemeldeten Benutzer an.
- ulimit -f –> Es zeigt die maximale Dateigröße an, die der Benutzer haben kann.
- umilit -m –> Zeigt die maximale Speichergröße für angemeldete Benutzer an.
- ulimit -v –> Es wird die maximale Speichergröße angezeigt
Verwenden Sie die folgenden Befehle, um die harten und weichen Grenzen für die Anzahl der geöffneten Dateien für den angemeldeten Benutzer zu überprüfen
[email protected] ~}$ ulimit -Hn1048576[email protected] ~}$ ulimit -Sn1024
Wie kann das Problem behoben werden, wenn die maximale Anzahl von Dateien erreicht wurde?
Nehmen wir an, unser Linux-Server hat das Limit der maximalen Anzahl geöffneter Dateien erreicht und möchte dieses Limit systemweit erweitern, zum Beispiel möchten wir 100000 als Limit der Anzahl geöffneter Dateien festlegen.
Verwenden Sie den Befehl sysctl, um den fs.file-max-Parameter spontan an den Kernel zu übergeben, und führen Sie den folgenden Befehl als Root-Benutzer aus,
[email protected]~]# sysctl -w fs.file-max=100000fs.file-max =100000
Die obigen Änderungen bleiben bis zum nächsten Neustart aktiv. Um diese Änderungen also über den Neustart hinweg dauerhaft zu machen, bearbeiten Sie die Datei /etc/sysctl.conf und denselben Parameter hinzufügen,
[email protected]~]# vi /etc/sysctl.conffs.file-max =100000
Datei speichern und beenden,
Führen Sie den folgenden Befehl aus, damit die obigen Änderungen sofort wirksam werden, ohne sich abzumelden und neu zu starten.
[email protected]~]# sysctl -p
Überprüfen Sie nun, ob neue Änderungen wirksam sind oder nicht.
[email protected]~]# cat /proc/sys/fs/file-max100000
Verwenden Sie den folgenden Befehl, um herauszufinden, wie viele Dateideskriptoren derzeit verwendet werden:
[[email protected] ~]# more /proc/sys/fs/file-nr1216 0 100000
Hinweis:- Befehl „sysctl -p “ wird verwendet, um die Änderungen ohne Neustart und Abmeldung zu übernehmen.
Ressourcenlimit auf Benutzerebene über die Datei limit.conf festlegen
„/etc/sysctl.conf “-Datei wird verwendet, um das Ressourcenlimit systemweit festzulegen, aber wenn Sie das Ressourcenlimit für bestimmte Benutzer wie Oracle, MariaDB und Apache festlegen möchten, kann dies über „/etc/security/limits.conf erreicht werden ” Datei.
Beispiel Limit.conf ist unten gezeigt,
[email protected]~]# cat /proc/sys/fs/file-max
Nehmen wir an, wir möchten ein hartes und weiches Limit für die Anzahl der geöffneten Dateien für Linuxtechi-Benutzer und für Oracle-Benutzer ein hartes und weiches Limit für die Anzahl der geöffneten Prozesse festlegen, bearbeiten Sie die Datei „/etc/security/limits.conf“ und fügen Sie Folgendes hinzu Zeilen
# harte Grenze für max. geöffnete Dateien für Linuxtechi-Benutzerlinuxtechi harte Nofile 4096# weiche Grenze für maximale Anzahl geöffneter Dateien für Linuxtechi-Benutzerlinuxtechi weiche Nofile 1024# harte Grenze für maximale Anzahl von Prozessen für Oracle-Benutzeroracle harte nproc 8096# weiche Grenze für maximale Anzahl von Prozess für Oracle UserOracle Soft nproc 4096
Speichern und beenden Sie die Datei.
Hinweis: Falls Sie anstelle von Benutzern eine Ressourcenbeschränkung für eine Gruppe festlegen möchten, kann dies auch über die Datei limit.conf möglich sein. Geben Sie anstelle des Benutzernamens @
# festes Limit für maximal geöffnete Dateien für sysadmin group@sysadmin hard nofile 4096 # weiches Limit für maximal geöffnete Dateien für 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 weiterer häufig verwendeter Befehl ist „lsof “, der verwendet wird, um herauszufinden, „wie viele Dateien derzeit geöffnet sind“. Dieser Befehl ist sehr hilfreich für Administratoren.
Fazit:
Wie im Einführungsabschnitt erwähnt, ist der Befehl „ulimit“ sehr leistungsfähig und hilft bei der Konfiguration und stellt sicher, dass Anwendungsinstallationen reibungsloser und ohne Engpässe ablaufen. Dieser Befehl hilft bei der Behebung vieler Dateibeschränkungen auf Linux-basierten Servern.