• Applications
  • Comment
  • Computers
  • Gadgets
  • Jeux
  • Nouvelles
  • Smart Watch
  • Smartphone
Facebook Twitter Instagram
FMZ Tech
  • Applications
  • Comment
  • Computers
  • Gadgets
  • Jeux
  • Nouvelles
  • Smart Watch
  • Smartphone
Facebook Twitter Instagram
FMZ Tech
Accueil»Comment»Wie kann ich den Fehler “Too Many Open Files” unter Linux beheben?
Comment 0 Vues

Wie kann ich den Fehler “Too Many Open Files” unter Linux beheben?

Par William Mossjuin 9, 20228 Mins Read
Facebook Twitter WhatsApp Télégramme
Wie kann ich den Fehler “Too Many Open Files” unter Linux beheben?
Partager
Facebook Twitter Télégramme WhatsApp

Auf Linux-Computern werden die Systemressourcen unter den Benutzern aufgeteilt. Wenn Sie versuchen, mehr als Ihren fairen Anteil zu nutzen, erreichen Sie eine Obergrenze. Sie riskieren auch, andere Benutzer oder Prozesse zu blockieren.

Gemeinsam genutzte Systemressourcen

Neben Milliarden anderer Aufgaben ist der Kernel eines Linux-Computers ständig damit beschäftigt, zu überwachen, wer wie viele endliche Systemressourcen wie RAM und Prozessorzyklen nutzt. Ein Mehrbenutzersystem erfordert ständige Aufmerksamkeit, um sicherzustellen, dass Personen und Prozesse nicht mehr Systemressourcen beanspruchen als nötig.

Es ist zum Beispiel nicht fair, wenn jemand so viel CPU-Zeit beansprucht, dass der Computer für alle anderen langsam erscheint. Selbst wenn Sie die einzige Person sind, die Ihren Linux-Computer benutzt, gibt es Grenzen für die Ressourcen, die Ihre Prozesse nutzen können. Schließlich sind Sie nur einer von vielen Benutzern.

Einige Systemressourcen sind wohlbekannt und offensichtlich, wie z. B. der Arbeitsspeicher, die Prozessorzyklen und der Platz auf der Festplatte. Aber es gibt viele, viele andere Ressourcen, die überwacht werden und für die jeder Benutzer – oder jeder Prozess, der zu einem Benutzer gehört – eine definierte Obergrenze hat. Eine davon ist die Anzahl der Dateien, die ein Prozess gleichzeitig geöffnet haben darf.

Wenn Sie jemals die Fehlermeldung “Too many files open” in einem Terminalfenster gesehen oder in Ihren Systemprotokollen gefunden haben, bedeutet dies, dass die Obergrenze erreicht wurde und der Prozess keine weiteren Dateien mehr öffnen darf.

Es sind nicht nur die Dateien, die Sie geöffnet haben

Es gibt auf Systemebene eine Grenze für die Anzahl der geöffneten Dateien, die Linux verwalten kann. Es ist eine sehr große Anzahl, wie wir gleich sehen werden, aber es gibt trotzdem eine Grenze. Jeder Benutzerprozess hat eine Zuweisung, die er nutzen kann. Sie erhalten jeweils einen kleinen Teil des gesamten Systems, der ihnen zugeteilt wird.

Was tatsächlich zugeteilt wird, ist eine bestimmte Anzahl von Dateimanagern. Jede Datei, die geöffnet wird, benötigt einen Dateimanager. Selbst bei recht großzügigen Zuweisungen auf Systemebene können Datei-Handles schneller genutzt werden, als Sie sich vorstellen können.

Linux abstrahiert fast alles, um es als Datei erscheinen zu lassen. Manchmal handelt es sich nur um einfache Dateien. Aber auch andere Aktionen, wie das Öffnen eines Verzeichnisses, verwenden eine Dateihandle. Linux verwendet spezielle Blockdateien als eine Art Treiber für Hardwaregeräte. Zeichenspezifische Spezialdateien sind sehr ähnlich, werden aber häufiger mit Geräten verwendet, die ein Durchsatzkonzept haben, wie Pipes und serielle Schnittstellen.

Blockspezialdateien verarbeiten Datenblöcke auf einmal und Zeichenspezialdateien verarbeiten jedes Zeichen separat. Auf diese beiden Spezialdateien kann man nur mit Hilfe von Dateihandles zugreifen. Bibliotheken, die von einem Programm verwendet werden, verwenden einen Dateimanager, Streams verwenden Dateimanager und Netzwerkverbindungen verwenden Dateimanager.

Die Abstraktion all dieser unterschiedlichen Anforderungen, damit sie als Dateien erscheinen, vereinfacht die Schnittstellenbildung mit ihnen und ermöglicht es, dass Dinge wie Piping und Streams funktionieren.

Sie können sehen, dass Linux hinter den Kulissen Dateien öffnet und Dateimanager verwendet, nur um sich selbst auszuführen – ohne Rücksicht auf Ihre Benutzerprozesse. Die Anzahl der geöffneten Dateien ist nicht nur die Anzahl der Dateien, die Sie geöffnet haben. Fast alles im Betriebssystem verwendet Dateigriffe.

Dateigriff-Grenzen

Die maximale Anzahl von Dateigriffen im System kann mit diesem Befehl gesehen werden.

cat /proc/sys/fs/file-max

Finding the system maximum for open files

Dieser Befehl gibt eine groteske Zahl von 9,2 Quintillionen zurück. Dies ist der theoretische Höchstwert des Systems. Es ist der größte mögliche Wert, den Sie in einer vorzeichenbehafteten 64-Bit-Ganzzahl unterbringen können. Ob Ihr armer Computer tatsächlich so viele geöffnete Dateien gleichzeitig verarbeiten kann, ist eine ganz andere Frage.

Auf Benutzerebene gibt es keinen expliziten Wert für die maximale Anzahl an geöffneten Dateien, die Sie haben können. Man kann sie aber ungefähr berechnen. Um die maximale Anzahl an Dateien zu ermitteln, die einer Ihrer Prozesse öffnen kann, können wir den Befehl ulimit mit der Option -n (offene Dateien) verwenden.

ulimit -n

Finding how many files a process can open

Und um herauszufinden, wie viele Prozesse ein Benutzer maximal haben kann, verwenden wir ulimit mit der Option -u (Benutzerprozesse).

ulimit -u

Finding the number of processes a user can have

Durch Multiplikation von 1024 und 7640 erhalten wir 7 823 360. Natürlich werden viele dieser Prozesse bereits von Ihrer Desktop-Umgebung und anderen Hintergrundprozessen verwendet. Dies ist also ein weiteres theoretisches Maximum, das Sie realistischerweise nie erreichen werden.

Die wichtige Zahl ist die Anzahl der Dateien, die ein Prozess öffnen kann. Standardmäßig liegt sie bei 1024. Es ist wichtig zu beachten, dass das gleichzeitige 1024-malige Öffnen derselben Datei gleichbedeutend mit dem gleichzeitigen Öffnen von 1024 verschiedenen Dateien ist. Sobald Sie alle Ihre Dateimanager verwendet haben, sind Sie fertig.

Es ist möglich, die Anzahl der Dateien, die ein Prozess öffnen kann, anzupassen. Es gibt eigentlich zwei Werte, die Sie beachten müssen, wenn Sie diese Anzahl anpassen. Der erste ist der aktuelle Wert oder der Wert, auf den Sie versuchen, ihn zu setzen. Das ist die sogenannte weiche Grenze. Es gibt auch eine obere Grenze, die der höchste Wert ist, auf den Sie die weiche Grenze bringen können.

Die Betrachtungsweise ist folgende: Die weiche Grenze ist eigentlich der “aktuelle Wert” und die obere Grenze ist der höchste Wert, den der aktuelle Wert erreichen kann. Ein normaler Benutzer, der nicht root ist, kann sein Softlimit auf einen beliebigen Wert erhöhen, bis er sein Hardlimit erreicht hat. Ein Root-Benutzer kann seine Hardgrenze erhöhen.

Um die aktuellen Soft- und Hardgrenzen zu sehen, verwenden Sie ulimit mit den Optionen -S (Soft) und -H (Hard) sowie der Option -n (offene Dateien).

ulimit -Sn
ulimit -Hn

Finding the soft and hard limit for process file handles

Um eine Situation zu schaffen, in der wir sehen können, dass das weiche Limit angewendet wird, haben wir ein Programm erstellt, das wiederholt Dateien öffnet, bis es fehlschlägt. Es wartet dann auf einen Tastenanschlag, bevor es auf alle Dateimanager verzichtet, die es verwendet hat. Das Programm heißt open-files.

./open-Files

The open-files program hitting the soft limit of 1024

Es öffnet 1021 Dateien und scheitert, wenn es versucht, die Datei 1022 zu öffnen.

1024 minus 1021 ist gleich 3. Was ist mit den anderen drei Dateimanagern passiert? Sie wurden für die Streams STDIN, STDOUT, und STDERR verwendet. Sie werden automatisch für jeden Prozess erstellt. Sie haben immer die Dateideskriptorwerte 0, 1 und 2.

Wir können sie sehen, indem wir den Befehl lsof mit der Option -p (Prozess) und der Prozess-ID des Programms open-files verwenden. Praktischerweise druckt sie ihre Prozess-ID im Terminalfenster aus.

lsof -p 11038

The stdin, stdout, and stderr streams and file handles in the lsof command output

Natürlich kann es in einer realen Situation vorkommen, dass Sie nicht wissen, welcher Prozess gerade alle Dateimanager übernommen hat. Um Ihre Nachforschungen zu beginnen, können Sie diese punktierte Befehlsfolge verwenden. Sie wird Ihnen die fünfzehn produktivsten Benutzer von Dateihandles auf Ihrem Computer anzeigen.

lsof | awk '{ print $1 " " $2; }' | sort -rn | uniq -c | sort -rn | head -15

Seeing the processes that use the most file handles

Um mehr oder weniger Einträge zu sehen, stellen Sie den Parameter -15 auf den Befehl head ein. Sobald Sie den Prozess identifiziert haben, müssen Sie feststellen, ob er rebelliert und zu viele Dateien öffnet, weil er außer Kontrolle geraten ist, oder ob er die Dateien wirklich braucht. Wenn er sie wirklich braucht, müssen Sie sein Limit für die Manipulation von Dateien erhöhen.

Softlimit erhöhen

Wenn wir das Softlimit erhöhen und unser Programm erneut ausführen, sollten wir sehen, dass es mehr Dateien öffnet. Wir werden den Befehl ulimit und die Option -n (Dateien öffnen) mit einem numerischen Wert von 2048 verwenden. Dies wird das neue Softlimit sein.

ulimit -n 2048

Setting a new file handle soft limit for processes

Diesmal haben wir 2045 Dateien erfolgreich geöffnet. Wie erwartet sind es drei Dateien weniger als 2048, was auf die Dateimanager zurückzuführen ist, die für STDIN, STDOUT, und STDERR verwendet werden.

Permanente Änderungen vornehmen

Die Erhöhung des Softlimits wirkt sich nur auf die aktuelle Shell aus. Öffnen Sie ein neues Terminalfenster und überprüfen Sie das Softlimit. Sie werden feststellen, dass es sich um den alten Standardwert handelt. Aber es gibt eine Möglichkeit, global einen neuen Standardwert für die maximale Anzahl geöffneter Dateien, die ein Prozess haben kann, festzulegen, der dauerhaft ist und Neustarts überlebt.

Veraltete Ratschläge empfehlen Ihnen oft, Dateien wie “/etc/sysctl.conf” und “/etc/security/limits.conf”. Auf systemd-basierten Distributionen funktionieren diese Ausgaben jedoch nicht konsistent, insbesondere bei grafischen Anmeldesitzungen.

Die hier gezeigte Technik ist der Weg, wie Sie dies auf systemd-basierten Distributionen tun können. Es gibt zwei Dateien, mit denen wir arbeiten müssen. Die erste ist die Datei “/etc/systemd/system.conf”. Wir müssen sudo.

sudo gedit /etc/systemd/system.conf

Editing the system.conf file

Suchen Sie nach der Zeile, die die Zeichenfolge “DefaultLimitNOFILE” enthält. Entfernen Sie die Raute “#” am Anfang der Zeile und ändern Sie die erste Zahl so, dass sie dem entspricht, was Sie für Ihr neues Software-Limit für Prozesse wünschen. Wir haben uns für 4096 entschieden. Die zweite Zahl in dieser Zeile ist das strikte Limit. Wir haben sie nicht geändert.

The DefaultLimitNOFILE value in the system.conf file

Speichern Sie die Datei und schließen Sie den Editor.

Wir müssen diesen Vorgang an der Datei “/etc/systemd/user.conf” wiederholen.

sudo gedit /etc/systemd/user.conf

Editing the user.conf file

Nehmen Sie die gleichen Anpassungen an der Zeile mit der Zeichenfolge “DefaultLimitNOFILE.”

The DefaultLimitNOFILE value in the user.conf file

Speichern Sie die Datei und schließen Sie den Editor. Sie müssen Ihren Computer entweder neu starten oder den Befehl systemctl mit der Option daemon-reexec verwenden, damit systemd erneut ausgeführt wird und die neuen Einstellungen übernimmt.

sudo systemctl daemon-reexec

Restarting systemd

Das Öffnen eines Terminalfensters und die Überprüfung des neuen Limits sollten den neuen Wert anzeigen, den Sie festgelegt haben. In unserem Fall ist es 4096.

ulimit -n

Checking the new soft limit with ulimit -n

Wir können überprüfen, ob es sich um einen tatsächlichen und funktionierenden Wert handelt, indem wir unser Programm zum Löschen von Dateien erneut starten.

./open-Files

Checking the new soft limit with the open-files program

Das Programm kann die Datei 4094 nicht öffnen, was bedeutet, dass 4093 Dateien geöffnet worden sind. Das ist unser Erwartungswert, 3 weniger als 4096.

Alles ist eine Datei

Deshalb ist Linux so abhängig von Dateimanagern. Jetzt wissen Sie, wie Sie Ihre Quote erhöhen können, wenn sie Ihnen allmählich ausgeht.

Share. Facebook Twitter LinkedIn WhatsApp Courriel : Télégramme
Article précédentWird MacOS 13 Ventura auf meinem MacBook oder Desktop-Mac funktionieren?
Article suivant 5 praktische Makros, die Sie Ihrer Tastatur zuweisen können

Articles connexes Posts

Comment utiliser les sous-titres en direct sur l’iPhone et l’iPad

juillet 22, 2022

Comment résoudre les problèmes de l’appareil photo OPPO K9X ?

juillet 22, 2022

Comment facilement Master Format XIAOMI REDMI 10 5G avec la sécurité Hard Reset ?

juillet 22, 2022

Façon simple de sauvegarder et de restaurer les contacts, les conversations, les données, les images et les SMS de l’OPPO A11S

juillet 22, 2022
Ad
Recherche
Messages récents
  • Comment utiliser les sous-titres en direct sur l’iPhone et l’iPad
  • Comment résoudre les problèmes de l’appareil photo OPPO K9X ?
  • Comment facilement Master Format XIAOMI REDMI 10 5G avec la sécurité Hard Reset ?
  • Façon simple de sauvegarder et de restaurer les contacts, les conversations, les données, les images et les SMS de l’OPPO A11S
  • Comment faciliter le Master Formatage du REALME 9 avec un Hard Reset de sécurité ?
Étiquettes
Affaires à Dubaï Airpods Amazon Android APK Apple Carplay Apple TV Batterie Crypto Discord Excel Facebook GeForce Gmail Google Chrome Google Docs Google Meet Google Sheets Huawei Instagram iOS Kodi Motorola Navigateur OnePlus Photoshop PowerPoint Realme Revue Rooter Safari Samsung Smart TV Spotify Steam Stockage Sécurité TikTok Twitter Vivo VPN WhatsApp Windows 10 Windows 11 YouTube
  • Privacy Policy
© 2022 Free Mobile Zone. Tech Blog

Tapez ci-dessus et appuyez sur Enterour effectuer la recherche. Appuyez sur Escour annuler.

Go to mobile version