GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie funktionieren Linux-Dateideskriptorbeschränkungen?

Sie sollten sich stattdessen /proc/sys/fs/file-max ansehen

Aus der letzten linux/Documentation/sysctl/fs.txt:

Dateimaximum &Dateinummer:

Der Kernel weist Dateihandles dynamisch zu, gibt sie aber noch nicht wieder frei.

Der Wert in file-max bezeichnet die maximale Anzahl von Datei-Handles, die der Linux-Kernel zuweist. Wenn Sie viele Fehlermeldungen erhalten, dass die Datei-Handles zur Neige gehen, sollten Sie dieses Limit erhöhen.

Historisch bezeichneten die drei Werte in file-nr die Anzahl der zugewiesenen Dateihandles, die Anzahl der zugewiesenen, aber unbenutzten Dateihandles und die maximale Anzahl der Dateihandles. Linux 2.6 meldet immer 0 als Anzahl der freien Datei-Handles -- das ist kein Fehler, es bedeutet nur, dass die Anzahl der zugewiesenen Datei-Handles genau mit der Anzahl der verwendeten Datei-Handles übereinstimmt.

Versuche, mehr Dateideskriptoren als file-max zuzuweisen, werden mit printk gemeldet, suchen Sie nach "VFS:file-max limitreached".

BEARBEITEN:Der zugrunde liegende Fehler ist wahrscheinlich nicht das System, dem die globalen Dateideskriptoren ausgehen, sondern nur Ihr Prozess. Wahrscheinlich liegt das Problem in der maximalen Größenbeschränkung von select.


Es sieht nicht so aus, als würden Sie das Systemdatei-Desriptor-Limit erreichen. Siehe diese Antwort.

Vielleicht verwendet Ihr Serverprozess select und ist somit auf 1024 Deskriptoren beschränkt? Wenn Sie zu einem anderen Mechanismus wechseln, z. poll Sie sind nicht mehr auf 1024 Deskriptoren beschränkt.

select() funktioniert mit fd_set s

Dies ist aus der POSIX-Dokumentation von select.h:

Folgendes soll als Makro definiert werden:

FD_SETSIZE

Maximum number of file descriptors in an fd_set structure.

Versuchen Sie FD_SETSIZE zu finden oder auszugeben auf Ihrem System.

Wenn Sie feststellen, dass FD_SETSIZE zu niedrig für Sie ist, würde ich lieber versuchen, von select wegzukommen als zu versuchen, FD_SETSIZE zu erhöhen was normalerweise schwieriger ist.


Linux
  1. So verwalten Sie Linux-Dateifunktionen

  2. So finden Sie eine Datei in Linux

  3. So erstellen Sie einen Swap unter Linux

  4. So erstellen Sie eine Auslagerungsdatei unter Linux

  5. Wie benenne ich eine Datei unter Linux um?

So verknüpfen Sie eine Datei unter Linux per Symlink

So ändern Sie das Limit für offene Dateien in Linux

Wie man mit Hardlinks und Softlinks unter Linux arbeitet

So verschlüsseln Sie Dateien unter Linux

So deaktivieren Sie Swap unter Linux

Wie verwende ich gzip unter Linux?